冰糕可变数组长度
Sorbet variable array length
我刚开始玩冰糕gem。我有一个方法需要 returns 一个对象数组。问题是,数组的长度是变化的。我如何输入检查方法?我不断收到 Expected type [Object], got array of size 2
这是我的方法
sig { params(foo: Array[Object]).returns(Array[Object]) }
def bar(foo)
# code to modify some of the attributes
end
tl;dr 你有语法错误。使用 T::Array[Object]
(不是 Array[Object]
)。
您使用的数组类型语法不正确:
# typed: strict
extend T::Sig
sig { params(foo: Array[Object]).returns(Array[Object]) }
def bar(foo)
# code to modify some of the attributes
end
错误显示:
editor.rb:5: Use T::Array[...], not Array[...] to declare a typed Array https://srb.help/5026
5 |sig { params(foo: Array[Object]).returns(Array[Object]) }
^^^^^^^^^^^^^
Note:
Array[...] will raise at runtime because this generic was defined in the standard library
Autocorrect: Use `-a` to autocorrect
editor.rb:5: Replace with T::Array
5 |sig { params(foo: Array[Object]).returns(Array[Object]) }
^^^^^
editor.rb:5: Use T::Array[...], not Array[...] to declare a typed Array https://srb.help/5026
5 |sig { params(foo: Array[Object]).returns(Array[Object]) }
^^^^^^^^^^^^^
Note:
Array[...] will raise at runtime because this generic was defined in the standard library
Autocorrect: Use `-a` to autocorrect
editor.rb:5: Replace with T::Array
5 |sig { params(foo: Array[Object]).returns(Array[Object]) }
^^^^^
Errors: 2
为什么会这样?
Array
上的 []
方法具有特殊含义,但 Sorbet 使用 []
作为泛型参数。为了解决这个问题,Sorbet 对标准库中的某些通用 类 使用 T::
命名空间:
→ https://sorbet.org/docs/stdlib-generics
你的情况是这段代码:
Array[Object]
相当于这样写:
[Object]
(即“创建一个包含值 Object
的长度为 1 的数组”)。 [Object]
在 Sorbet 中恰好是表达 1-tuple
的方式。
我刚开始玩冰糕gem。我有一个方法需要 returns 一个对象数组。问题是,数组的长度是变化的。我如何输入检查方法?我不断收到 Expected type [Object], got array of size 2
这是我的方法
sig { params(foo: Array[Object]).returns(Array[Object]) }
def bar(foo)
# code to modify some of the attributes
end
tl;dr 你有语法错误。使用 T::Array[Object]
(不是 Array[Object]
)。
您使用的数组类型语法不正确:
# typed: strict
extend T::Sig
sig { params(foo: Array[Object]).returns(Array[Object]) }
def bar(foo)
# code to modify some of the attributes
end
错误显示:
editor.rb:5: Use T::Array[...], not Array[...] to declare a typed Array https://srb.help/5026
5 |sig { params(foo: Array[Object]).returns(Array[Object]) }
^^^^^^^^^^^^^
Note:
Array[...] will raise at runtime because this generic was defined in the standard library
Autocorrect: Use `-a` to autocorrect
editor.rb:5: Replace with T::Array
5 |sig { params(foo: Array[Object]).returns(Array[Object]) }
^^^^^
editor.rb:5: Use T::Array[...], not Array[...] to declare a typed Array https://srb.help/5026
5 |sig { params(foo: Array[Object]).returns(Array[Object]) }
^^^^^^^^^^^^^
Note:
Array[...] will raise at runtime because this generic was defined in the standard library
Autocorrect: Use `-a` to autocorrect
editor.rb:5: Replace with T::Array
5 |sig { params(foo: Array[Object]).returns(Array[Object]) }
^^^^^
Errors: 2
为什么会这样?
Array
上的 []
方法具有特殊含义,但 Sorbet 使用 []
作为泛型参数。为了解决这个问题,Sorbet 对标准库中的某些通用 类 使用 T::
命名空间:
→ https://sorbet.org/docs/stdlib-generics
你的情况是这段代码:
Array[Object]
相当于这样写:
[Object]
(即“创建一个包含值 Object
的长度为 1 的数组”)。 [Object]
在 Sorbet 中恰好是表达 1-tuple
的方式。