是否有匹配整数范围的方法?我正在寻找剥字符后一定数量的字符,并添加一个省略号。这是我想做的,但在1..32
上不匹配。
def cutoff(title) do
case byte_size(title) do
_ -> title
1..32 -> String.slice(title, 1..32) <> " ..."
end
end
有两个问题:
- 当Elixir(和Erlang)中的模式匹配时,模式将从上到下进行评估。在您的示例中,在您的数字范围上方有一个catch all子句(被忽略的变量
- 您正在检查范围
1..32
-byte_size
的值不会返回范围,它将返回一个整数。如果你想在一个范围内检查,那么你必须使用一个保护。
_
)。如果你交换你的匹配顺序并使用保护,那么它将工作:
def cutoff(title) do
case byte_size(title) do
x when x in 1..32 -> String.slice(title, 1..32) <> " ..."
_ -> title
end
end
你可能还想从0
而不是1
中切片,这样第一个字符就不会被切断。