pattern-matching - case 子句上的字符串模式匹配
问题描述
例如这个元组:
{:error,
"Timeout error: {:timeout, {:gen_server, :call, [#PID<0.12345.0>"]}}"}
是否可以做类似的事情?
case result do
{:ok, result} -> result
{:error, msg =~ "Timeout"} -> "Timeout error"
{:error, _msg} -> "Another different error"
end
解决方案
您无法匹配模式中任意索引处的子字符串,但在这种情况下,由于字符串以 开头,Timeout
您可以这样做:
case result do
{:ok, result} -> result
{:error, "Timeout" <> _} -> "Timeout error"
{:error, _msg} -> "Another different error"
end
推荐阅读
- python - 全局变量未在 Django 视图中更新
- mysql - [错误][服务器] 你是否已经在端口:3306 上运行了另一个 mysqld 服务器?
- dll - 正确构建后可执行文件找不到.dll
- shell - 将十六进制值解析为 shell 脚本的字符串
- sql - 使用 Excel VBA 插入 Redshift
- json - 使用输出部分创建 Cloudformation 堆栈时无输出
- php - sort_flag 如何对数组进行排序?
- node.js - MongooseError [CastError]:在路径“收藏夹”中,值“{ id:'5e9485557841553e6806b6e1'}”转换为 ObjectId 失败
- nginx - nginx geoip city 如何只使用英文字符?
- python - 为什么使用 pygame.flip 会出现“视频系统未初始化”错误?