toChar不是Unit的值

时间:2016-06-13 06:14:40

标签: scala

var products = { 'Milk 1l': 39,
                 'Imasi': 30,
                 'Bread': 45, 
                 'Chakalaka Can': 23,
                 'Gold Dish Vegetable Curry Can': 17,
                 'Fanta 500ml': 33,
                 'Coke 500ml': 54,
                 'Cream Soda 500ml': 22,
                 'Iwisa Pap 5kg': 17,
                 'Top Class Soy Mince': 22,
                 'Shampoo 1 litre': 3,
                 'Soap Bar': 12,
                 'Bananas - loose': 47,
                 'Apples - loose': 36,
                 'Mixed Sweets 5s': 49 }

当我运行上面的第一个代码段时,我收到错误:for (i <- 0 to 1; c <- 0 until str.length) { print(c + i).toChar } for (i <- 0 to 1; c <- 0 until str.length) yield (str(c) + i).toChar 。但是,当我使用yield运行第二个代码片段时,错误消失了。

这是因为第一个代码段中value toChar is not a member of Unit中的statement print(c+i)返回值block statementUnit数据类型没有调用的函数Unit?我很难弄清楚Scala中toChar中某些内容何时返回Unit

2 个答案:

答案 0 :(得分:2)

print函数返回Unit,所以:

print(c + i).toChar

正在尝试为toChar找到Unit方法(它不存在)。

你需要在里面打印

print((c + i).toChar)
# equivalently 
print(c + i toChar)

答案 1 :(得分:2)

这是因为<fn>() - 函数调用运算符的优先级高于<obj>.<field/method> - 字段或方法访问权限,因此scala认为您要调用print(c + i) => Unit然后调用Unit.toChar