foreach不是Int的成员

时间:2017-06-24 14:07:13

标签: scala

下面的代码抛出错误:

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)

任何人都可以帮助我理解这个

1 个答案:

答案 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定义的,因此编译器很高兴。