从零开始学 Ruby 之五: 让字符串出来打个招呼


#1

本节课目标

完成一个简单的打招呼程序,效果如图.

不过在这之前我们先需要学习一点新的知识.

花样调用方法随你喜欢

在 ruby 里调用方法非常简单,基本的原型:

# 对象.方法(可选参数)

这也是 Ruby 作为面向对象语言一个非常显著的特征.只是程序员把懒作为美德,所以会写的随意,乱入类似函数式编程然后用空格代替括号最后再来个链式调用:

p Time.now.year  # => 2017
# 上节课有人吐槽听不懂,这节详解
# Time.now => 获取当前时间,对象.方法,无参数.
# 执行结果作为.year的对象,对象.方法,无参数.
# 整个结果作为 p 的参数,方法(参数),注意是省略对象.

上面出现了三个晦涩难懂的名词,现阶段的简单理解:

  1. 面向对象.你看到的一切都是对象,请当成佛偈反复诵读.
  2. 函数式编程.可以省略对象直接调用方法,各种不关心对象的时候用,你看到长的奇怪怎么找不到.的调用基本都是这种.
  3. 链式调用.从左往右执行的结果作为下一个方法的对象继续执行,可以拖超长的火车.因为懒起来效果特别好,逻辑上又连贯,大家都喜欢用.

有的童鞋一定会吐槽:上面的文字每个字都认识,可组合起来就陌生,没关系,一回生二回熟,思考人生的时候多想想也许会有意外收获.

变量赋值一丢丢

Ruby 是动态类型,也就是你把变量变来变去编译器也不会打你.局部变量要求以小写字母开头,本节不涉及其它类型的变量与变量作用域.

如果你不知道什么是变量请阅读初等数学教材.

# 原型
# 变量 = 数值
s = 'Hi'  # s 是字符串类型
s = 233  # s 是整数类型
s = Time.now  # s 是时间类型

上面的行为就叫做给变量赋值.这么做的目的是为了后续处理方便.

通关密语

建议先自行编写代码完成任务

# gets.rb
print '请输入您的名字:'
name = gets.chomp
# gets 获取用户在下一行的输入
# chomp 删除获取结果中的换行符
# 比如你输入"abc",获取到的实际是"abc\n"
#
print '请输入您的职位:'
job = gets.chomp
p "您好,#{name[0]}#{job}"