gpt4 book ai didi

elixir - 整数范围的大小写匹配

转载 作者:行者123 更新时间:2023-12-02 23:03:00 24 4
gpt4 key购买 nike

有没有办法在整数范围内进行匹配?我希望在一定数量的字符后删除字符,并添加省略号。这就是我想做的,但与 1..32 不匹配。

def cutoff(title) do
case byte_size(title) do
_ -> title
1..32 -> String.slice(title, 1..32) <> " ..."
end
end

最佳答案

这里有 2 个问题:

  1. 在 Elixir(和 Erlang)中进行模式匹配时,模式会从上到下进行评估。就您而言,您的数字范围上方有一个 catch all 子句(被忽略的变量 _)。
  2. 您正在检查 1..32 范围内的值 - byte_size 不会返回 range ,而是返回一个整数。如果你想在一个范围内检查,那么你必须使用 guard .

如果你交换比赛顺序并使用后卫,那么它会起作用:

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 进行切片,这样第一个字符就不会被切断。

关于elixir - 整数范围的大小写匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31273605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com