ruby - Ruby:使用括号和字符串键访问字符串中的字符
问题描述
有人可以解释一下这里发生了什么吗?请参阅注释行。
> test = "This is a test"
=> "This is a test"
> test["is"] # What happens here?
=> "is"
我知道可以通过整数索引访问字符串中的字符。但是显示的代码片段中使用了什么样的语言功能?
解决方案
您正在调用[]
一个传递参数的字符串,并且它正在返回给定该参数的事件,正如文档所说:
如果给出了 match_str,则如果它出现在字符串中,则返回该字符串。
它的工作原理是这样的:
p "This is a test"["is"] # "is"
p "This is a test"["is not"] # nil
如果给定的参数是一个字符串,它将返回它在接收器中的第一次出现,否则,它只返回 nil。
每当您遇到这样的疑问时,请先检查问题中的元素;你有一个接收器(一个字符串),你正在调用一个方法([]
)并且你正在传递一个参数(也是一个字符串):
"This is a test"["is"]
| | |
| | --- # argument
| ------ # method
-------------------- # receiver
所以,首先要做的是检查你正在处理什么样的对象;然后您可以检查方法的定义位置,然后检查您正在使用的参数。
推荐阅读
- python - C++ 2D 向量到 2D pybind11 数组
- swift - 如何为 UILabel、UITextView 和 UITextField 创建扩展
- c# - 将 dll 引用添加到 github 上可见的 Visual Studio C# 项目
- kubernetes - 如何配置 Istio 虚拟服务目标协议
- ssl - 发出 HTTPS 请求时出现“TLS 支持不可用”错误
- python - 如何在 PyQt 中的每个选项卡中分离显示和变量?
- javascript - 模态弹出框立即消失
- amazon-web-services - AWS cloudwatch CPU 使用率与实际使用率不匹配
- linux - 如何替换 Nano 或 vim 中的文本?
- apache-kafka - 多个 Kafka 生产者写入同一个主题 - 如何负载平衡消费