gpt4 book ai didi

datatables - Erlang ets :select sublist

转载 作者:行者123 更新时间:2023-12-04 08:48:27 27 4
gpt4 key购买 nike

Erlang 有没有办法在 ets 表上创建一个选择查询,它将获得 的所有元素包含 搜索到的文本?

ets:select(Table,
[{ %% Match spec for select query
{'_', #movie_data{genre = "Drama" ++ '_' , _ = '_'}}, % Match pattern
[], % Guard
['$_'] % Result
}]) ;
这段代码只给了我 的数据开始 (=prefix) 与所需的文本 (text = "Drama"),但问题是我还需要包含数据的结果,如下例所示:

#movie_data{genre = "Action, Drama" }


我试着把守卫换成这样的—— {'_', #movie_data{genre = '$1', _='_'}}, [string:str('$1', "Drama") > 0] ...但问题是它不是一个合格的守卫表达式。
谢谢您的帮助!!

最佳答案

这是不可能的。您需要将数据结构设计为可通过保护表达式进行搜索,例如:


-record(movie_data, {genre, name}).
-record(genre, {comedy, drama, action}).

example() ->
Table = ets:new('test', [{keypos,2}]),
ets:insert(Table, #movie_data{name = "Bean",
genre = #genre{comedy = true}}),
ets:insert(Table, #movie_data{name = "Magnolia",
genre = #genre{drama = true}}),
ets:insert(Table, #movie_data{name = "Fight Club",
genre = #genre{drama = true, action = true}}),
ets:select(Table,
[{#movie_data{genre = #genre{drama = true, _ = '_'}, _ = '_'},
[],
['$_']
}]).

关于datatables - Erlang ets :select sublist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64188452/

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