3
def my_method(options = {})
  # ...
end

# => Syntax error in ./src/auto_harvest.cr:17: for empty hashes use '{} of KeyType => ValueType'

虽然这是有效的 Ruby,但它似乎不在 Crystal 中,我怀疑这是因为打字。如何告诉编译器我想默认为空哈希?

4

2 回答 2

7

使用默认参数(如在 Ruby 中):

def my_method(x = 1, y = 2)
  x + y
end

my_method x: 10, y: 20 #=> 30
my_method x: 10        #=> 12
my_method y: 20        #=> 21

在 Crystal 中完全不鼓励对默认/命名参数使用哈希值

(编辑以包含示例而不是链接到文档)

于 2015-07-29T01:19:11.587 回答
5

似乎错误包含了我需要的所有信息,我需要指定哈希的键和值的类型。

def my_method(options = {} of Symbol => String)
  # ...
end

在文档中也很清楚。

于 2015-07-28T22:33:44.483 回答