Erlang中ets模块中的fun2ms/1。

问题来源:

http://stackoverflow.com/questions/16660955/mnesia-check-for-a-value-in-either-of-the-keys-in-the-table/16769468#16769468

关于此函数的分析:

http://blog.yufeng.info/archives/482#more-482


自己的代码实现:

-module(wy).
-compile(export_all).

-record(users, {username, nickname, age}).
-include_lib("stdlib/include/ms_transform.hrl").

create_table()->
    mnesia:create_schema(node()),
    mnesia:start(),
    mnesia:create_table(users, [{attributes, record_info(fields, users)}]).

test()->
    Fun = fun()->
                  mnesia:write(#users{username = "John", nickname = "baddy", age = 25}),
                  mnesia:write(#users{username = "DaDa", nickname = "KaKa", age = 24}),
                  mnesia:write(#users{username = "Monk", nickname = "John", age = 24})
          end,
    mnesia:transaction(Fun),

    Fun2 = ets:fun2ms(fun({users, UserName, NickName, Age}) when
        UserName == "John" orelse NickName == "John" ->
                              {users, UserName, NickName, Age}
                      end),

    mnesia:transaction(fun() -> mnesia:select(users, Fun2) end).


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值