我试图在Swift中编写一般的argmin函数。这是我的代码:
func argmin<X, Y:Comparable, R:SequenceType, where X== R.Generator.Element>
(f:(X)->Y, domain:R)->X{
var gen = domain.generate()
var best = gen.next()!
var minval = f(best)
while let this = gen.next() {
let value = f(this)
if value < minval {
best = this
minval = value
}
}
return best
}
我收到错误消息&#34;预期标识符以命名通用参数&#34;当我尝试编译这个定义时。我不知道这是什么意思。听起来这是一个调用函数的错误,而不是定义它,但即便如此,我也不会理解它。
我刚刚开始学习Swift。你能解释一下这个消息吗? (顺便说一句,我知道如果用一个空序列调用,这个函数会爆炸。我还没有担心。)
答案 0 :(得分:1)
您必须删除此逗号:
func argmin<X, Y:Comparable, R:SequenceType, where X== R.Generator.Element>
^
放置它,它告诉编译器有另一个通用参数。错误信息只是说 - 可能是一种神秘的方式,但一旦你知道,它就更明确了什么