下面的代码抛出错误:
def sum(args: Int) = {
var result = 0
for (arg <- args) result += arg
result
}
error : error: value foreach is not a member of Int
for (arg <- args) result += arg
然而,如果我将参数摄入量改为工作正常
def sum(args: Int*) = {
var result = 0
for (arg <- args) result += arg
result
}
这很好用:
val s = sum(1, 4, 9, 16, 25)
任何人都可以帮助我理解这个
答案 0 :(得分:1)
#!/usr/bin/env python
from flask_script import Manager
from app import app, db
manager = Manager(app)
@manager.shell
def make_shell_context():
""" Creates a python REPL with several default imports
in the context of the app
"""
return dict(app=app, db=db)
if __name__ == "__main__":
manager.run()
在上面的代码中,def sum(args: Int) = {
var result = 0
for (arg <- args) result += arg
result
}
是一个args
。编译器尝试将Int
翻译为for (arg <- args)
,但未为args.foreach
定义foreach
; Int
是为集合定义的函数。
foreach
在上面的代码中,def sum(args: Int*) = {
var result = 0
for (arg <- args) result += arg
result
}
是args
或可变长度参数(或“varargs”),在本例中是一个或多个Int*
s。 Varargs被翻译为Int
s。 Seq
是为foreach
定义的,因此编译器很高兴。