Vec*_*tor 8 variables operators variable-assignment go
这可能不是一个很好的问题,因为我不知道任何支持这个功能的编译语言,但是由于Go总是令我惊讶,我还是会问它:
对于我自己的练习,我正在Go中编写一个小计算器程序.我想知道是否有一种方法可以声明并分配一个类型为"运算符"的变量,这样我就可以编写:
var o Operator
o = +
var o1 Operator
o1 = /
Run Code Online (Sandbox Code Playgroud)
并写这样的功能
func DoOperation(a,b int,o Operator) int{
return a o b
}
Run Code Online (Sandbox Code Playgroud)
(不,我不是在询问运营商是否超载.)
另外,我不知道任何支持这种事情的编译语言(我不是这方面的专家).我确实查看了运算符下的文档并没有发现任何内容.可以再次让我惊讶吗?
编辑: 接受的答案表明Haskell支持这一点,
不,Go运算符不是函数,因此没有有效的右手表达式.它们以通用方式工作,例如,plus-operator适用于所有数字类型,而infix-notation也不支持la haskell.
您必须使用反射编写自己的"软" - 通用添加功能.
一种涵盖所有需求的编译语言是Haskell.
你不能完全按照你说的做,但你可以改用函数.你必须为每个运算符编写函数,但这是相对较少的代码.
type BinaryOperator func(a, b int) int
func OpAdd(a, b int) int { return a + b }
func OpSub(a, b int) int { return a - b }
func ApplyBinaryOperator(a, b int, op BinaryOperator) int {
return op(a, b)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
187 次 |
最近记录: |