Elm技术问询:如何在列表元素末尾追加字符串并映射处理
在Elm中为列表元素末尾追加字符串
嘿,别担心,新手问题完全正常——刚开始接触Elm的函数式思维时,很容易在参数顺序上踩小坑!
你遇到的问题其实和String.append的参数逻辑有关:String.append str1 str2的作用是把str1拼接到str2的前面,所以你当前的confirmExit函数是把后缀放在了用户名前面,自然得到了反向的结果。
解决方案1:调换String.append的参数顺序
只需要修改confirmExit函数里的参数位置,把用户名放在前面,要追加的字符串放在后面:
-- 创建用户名列表 usernames = ["Dave", "Simon", "Sally", "Joe"] -- 修改confirmExit函数的参数顺序 confirmExit name = String.append name " has left the room" -- 应用到列表 List.map confirmExit usernames
运行后就会得到你想要的结果:["Dave has left the room","Simon has left the room","Sally has left the room","Joe has left the room"]
解决方案2:用Elm的字符串插值(更直观)
Elm支持在字符串中直接插入变量,语法是{变量名},这种写法可读性更强,尤其是拼接内容比较复杂的时候:
confirmExit name = "{name} has left the room"
同样用List.map confirmExit usernames就能得到正确结果。
更简洁的写法:直接在map里定义匿名函数
如果这个confirmExit函数只在这一处使用,也可以不用单独定义,直接写在List.map里:
usernames = ["Dave", "Simon", "Sally", "Joe"] List.map (\name -> name ++ " has left the room") usernames
这里用++运算符代替String.append,效果完全一致——a ++ b等价于String.append a b,写法更简洁。
总结一下:核心就是搞清楚字符串拼接的顺序,不管用String.append、++还是字符串插值,只要把要保留在前的内容放在前面就好啦!
内容的提问来源于stack exchange,提问作者Wilfo
相关产品推荐
相关产品推荐

