learn ruby the hard way (00~05)

http://learnrubythehardway.org/

为什么用这个做教材

  • 七天七语言(不靠谱)
  • 21天精通java(不靠谱)
  • 做好每小节的练习
  • 不要复制粘帖

操作系统

  • Linux(强烈推荐)
  • MacOS(推荐)
  • Windows(不推荐)

操作系统 2

编辑器

http://www.sublimetext.com/3

安装Ruby

  • Ubuntu: sudo apt-get install ruby
  • MacOS: 自带
  • Windows: RailsFTW

搜索引擎

  • Google
  • Bing
  • Baidu(不靠谱)

检查Ruby版本

  • 打开命令行(bash/terminal/powershell)
  • 输入ruby -v

quake@quake-nuc:~$ ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
          

Hello World

打开编辑器,输入如下内容,保存为ex1.rb


puts "Hello World!"
puts "Hello Again"
puts "I like typing this."
puts "This is fun."
puts "Yay! Printing."
puts "I'd much rather you 'not'."
puts 'I "said" do not touch this.'
          

puts = put string,输出字符串

打开命令行,输入ruby ex1.rb

注释


# A comment, this is so you can read your program later.
# Anything after the # is ignored by ruby.

puts "I could have code like this." # and the comment after is ignored

# You can also use a comment to "disable" or comment out a piece of code:
# puts "This won't run."

puts "This will run."

# The # in that code is inside a string,
# so it will be put into the string until the ending " character is hit.
puts "Hi # there."
          

数字和算术

所有的编程语言都有和数学相关的内容,但是不用担心,大部分程序员的职业生涯只是同数字和算术打交道。


puts "I will now count my chickens:"

puts "Hens #{25 + 30 / 6}"
puts "Roosters #{100 - 25 * 3 % 4}"

puts "Now I will count the eggs:"

puts 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6

puts "Is it true that 3 + 2 < 5 - 7?"

puts 3 + 2 < 5 - 7

puts "What is 3 + 2? #{3 + 2}"
puts "What is 5 - 7? #{5 - 7}"

puts "Oh, that's why it's false."

puts "How about some more."

puts "Is it greater? #{5 > -2}"
puts "Is it greater or equal? #{5 >= -2}"
puts "Is it less or equal? #{5 <= -2}"
          

变量和名字

在程序员的世界里,变量(variable)只是为某个东西起个名字,通过变量名可以让代码看起来更像是英文,以免以后看不懂自己的代码。

cars = 100
space_in_a_car = 4.0
drivers = 30
passengers = 90
cars_not_driven = cars - drivers
cars_driven = drivers
carpool_capacity = cars_driven * space_in_a_car
average_passengers_per_car = passengers / cars_driven


puts "There are #{cars} cars available."
puts "There are only #{drivers} drivers available."
puts "There will be #{cars_not_driven} empty cars today."
puts "We can transport #{carpool_capacity} people today."
puts "We have #{passengers} to carpool today."
puts "We need to put about #{average_passengers_per_car} in each car."
          

更多的变量和打印

有2件事情对于程序员来说是最难的,第一是给变量起名,第二是让缓存失效。

my_name = 'Zed A. Shaw'
my_age = 35 # not a lie in 2009
my_height = 74 # inches
my_weight = 180 # lbs
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'

puts "Let's talk about #{my_name}."
puts "He's #{my_height} inches tall."
puts "He's #{my_weight} pounds heavy."
puts "Actually that's not too heavy."
puts "He's got #{my_eyes} eyes and #{my_hair} hair."
puts "His teeth are usually #{my_teeth} depending on the coffee."

# this line is tricky, try to get it exactly right
puts "If I add #{my_age}, #{my_height}, and #{my_weight} I get #{my_age + my_height + my_weight}."
          

Q & A

下一课