所以我正在创建一个IRC服务器,我有一个从Map中删除用户的功能。我们的想法是使用模式匹配,因此如果用户在地图中,则会调用函数的一个版本,否则会调用另一个函数。
我的第一个想法是做以下事情:
remove_user_from_channel(User, Channel=#channel_details{users = UserMap=#{User := _}}) ->
Channel#channel_details{users = maps:remove(User, UserMap)}.
但是,无法使用错误variable 'User' is unbound
进行编译。
有没有办法用功能级别模式匹配来完成这个?
答案 0 :(得分:3)
你不能在函数头中对地图键进行模式匹配,但你可以在case
中进行:
remove_user_from_channel(User, Map) ->
case Map of
Channel = #channel_details{users = UserMap = #{User := _}} ->
Channel#channel_details{users = maps:remove(User, UserMap)};
_ ->
other
end.
答案 1 :(得分:2)
is_key(Key, Map) -> boolean()
我认为您无法在功能级别使用匹配模式,但您可以使用User
检查UserMap
中的class RandomImage: UITableViewCell {
@IBOutlet weak var ImageView: UIImageView!
@IBOutlet weak var ChangingButton: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
self.ChangingButton.setTitle("Change", forState: UIControlState.Normal)
}
@IBAction func changeImageTapped(sender: UIButton){
var firstRandomNumber = arc4random_uniform(NUMBER) + 1
var firstImageString:String = String(format: "image%i", firstRandomNumber)
self.ImageView.image = UIIMAge(named: firstImageString)
}
。
链接在这里:
http://erlang.org/doc/man/maps.html#is_key-2