我正在做一个具有非常相似代码块的程序,并且我试图在“块”中创建一个位置。只是一个例子
function "sum" x = x + a
function "product" x = x * a
where
a = 2
我希望在两行中都替换“a”,但我没有发现这是否可以使用 where
提前致谢
我正在做一个具有非常相似代码块的程序,并且我试图在“块”中创建一个位置。只是一个例子
function "sum" x = x + a
function "product" x = x * a
where
a = 2
我希望在两行中都替换“a”,但我没有发现这是否可以使用 where
提前致谢
如果你真的需要这个,你需要合并两个函数子句。一种方法:
func what x = case what of
"add" -> x+a
"mul" -> x*a
where
a = 2
您还可以引入第二个功能:
function fName x = function' fName x
where
a = 2
function' "sum" x = x + a
function' "product" x = x * a
(请原谅我,因为我是新手。)我认为这是不可能的。“块”的范围where
是它定义的函数。但是你可以做的是:
Prelude> let a = 2
Prelude> let sum x = x + a
Prelude> let product x = x * a
Prelude> sum 3
5
这是在 GHCi 中完成的。您可能担心每个人都可以看到a
,但是如果这是在 .hs 文件中,您可以将其设为模块而不是 export a
,然后只有这些函数可以看到它。
我认为您可以定义一个新功能 geta
geta=2
然后您可以在任何其他功能中使用 geta 功能。
我不认为混合每个函数是一个好方法,也许你会有 20 个函数需要相同的值