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