请问Ruby中带冒号的to_s调用会对对象产生什么作用?
解答
首先你的认知存在偏差,不存在「带冒号的to_s方法」,to_s本身的作用也不是把字符串转为symbol:
to_s是Ruby通用的内置方法,作用是将调用对象转换为字符串类型。你提到的「将单个字母的字符串转换为symbol」的方法是to_sym(也可使用别名intern),大概率是你把symbol字面量的前缀冒号和方法名混淆了。- 你贴出的代码是自定义的卡牌类实例方法,逻辑非常明确:当卡牌处于展示状态(
revealed?返回true)时返回卡牌面值的字符串形式,否则返回空白字符串,全程不涉及symbol转换操作。
用法示例对比
# to_s 转字符串 :a.to_s # 输出 "a",属于String类 # to_sym 转symbol "a".to_sym # 输出 :a,属于Symbol类,这才是卡牌开发中单字母转symbol的常用写法
补充说明:Ruby中
:开头的是symbol类型的字面量标识,不属于任何方法的命名部分,不要和方法调用逻辑混淆。
内容的提问来源于stack exchange,提问作者hematopoietic
相关产品推荐
相关产品推荐

