ruby笔记1—- 基本语法

  • Post author:
  • Post category:其他


在centos系统上,输入sudo yum install ruby安装ruby



Hello World

在命令行中输入irb,进入ruby交互式命令行

开始hello world

1

#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径。

$bash



表示系统提示符,

































表示此用户为普通用户,超级用户的提示符是#。

bash是shell的一种,是linux下最常用的一种shell。

$bash的意思是执行一个子shell,此子shell为bash。

2

以下引用自:

四种不同的脚本运行方式的区别

使用fork方式运行script时, 就是让shell(parent process)产生一个child process去执行该script,当child process结束后,会返回parent process,但parent process的环境是不会因child process的改变而改变的。

使用source方式运行script时, 就是让script在当前process内执行, 而不是产生一个child process来执行。由于所有执行结果均于当前process内完成,若script的环境有所改变, 当然也会改变当前process环境了。

使用exec方式运行script时, 它和source一样,也是让script在当前process内执行,但是process内的原代码剩下部分将被终止。同样,process内的环境随script改变而改变。

shell中,source 是内置命令,用途是读取文件中内容,并在当前shell中逐条执行。这种方式执行的脚本无须执行权限。source命令可以缩写为一个小数点

//其中test.sh内容如下:

#!/bin/bash
cd ..

同样都是cd …,为什么执行完脚本当前bash目录不变,这就证明了这是由子bash执行,而非交互式bash(两次执行,第一次是用source,第二次是用bash,当前的位置可以看中括号的最后面,这里,~表示/root目录,/表示根目录)

3



设置编码

#!/usr/bin/ruby -w

# -*- coding: UTF-8 -*-

puts “你好,世界!”;

Ruby 把分号和换行符解释为语句的结尾。



多行字符串和注释


以下代码参考



ruby用法


建立多行字符串

#!/usr/bin/ruby -w
# -*- coding : utf-8 -*-
 
print <<EOF
    这是第一种方式创建here document 。
    多行字符串。
EOF
 
print <<"EOF";                # 与上面相同
    这是第二种方式创建here document 。
    多行字符串。
EOF
 
print <<`EOC`                 # 执行命令(单引号后面执行命令)
    echo hi there
    echo lo there
EOC
 
print <<"foo", <<"bar"          # 您可以把它们进行堆叠
    I said foo.
foo
    I said bar.
bar

这是第一种方式创建here document 。

多行字符串。

这是第二种方式创建here document 。

多行字符串。

hi there

lo there

I said foo.

I said bar.

在程序运行前调用某段代码

BEGIN {
   code
}

在程序结束时调用某段代码

END {
   code
}

注释是用#

多行注释还可以用:

=begin
这是注释。
这也是注释。
这也是注释。
这还是注释。
=end



使用#{expr}

使用序列 #{ expr } 替换任意 Ruby 表达式的值为一个字符串。在这里,expr 可以是任意的 Ruby 表达式。



单引号里面都是表达原来的字面义,即反斜杠也会被当作反斜杠,而不会和其他字符联合起来(除了\ 和 ’ )。双引号里反斜杠可以和其他字符联合起来表达其他意思。

8

ruby的保留字不能作为常量或变量的名称。但是,它们可以作为方法名。



区间

一个范围表示一个区间。

范围是通过设置一个开始值和一个结束值来表示。范围可使用 s…e 和 s…e 来构造,或者通过 Range.new 来构造。

使用 … 构造的范围从开始值运行到结束值(包含结束值)。使用 … 构造的范围从开始值运行到结束值(不包含结束值)。当作为一个迭代器使用时,范围会返回序列中的每个值。

范围 (1…5) 意味着它包含值 1, 2, 3, 4, 5,范围 (1…5) 意味着它包含值 1, 2, 3, 4 。

9



五种变量

参考自:

ruby变量

Ruby 支持五种类型的变量。

一般小写字母、下划线开头:变量(Variable)。

$开头:全局变量(Global variable)。

@开头:实例变量(Instance variable)。

@@开头:类变量(Class variable)类变量被共享在整个继承链中

大写字母开头:常数(Constant)。

1.实例变量以 @ 开头。未初始化的实例变量的值为 nil,在使用 -w 选项后,会产生警告

2.类变量以 @@ 开头,且必须初始化后才能在方法定义中使用。引用一个未初始化的类变量会产生错误。类变量在定义它的类或模块的子类或子模块中可共享使用。在使用 -w 选项后(#!/usr/bin/ruby -w),重载类变量会产生警告。

3.局部变量以小写字母或下划线 _ 开头。

当调用一个未初始化的局部变量时,它被解释为调用一个不带参数的方法。

4.常量以大写字母开头。定义在类或模块内的常量可以从类或模块的内部访问,定义在类或模块外的常量可以被全局访问。

常量不能定义在方法内。引用一个未初始化的常量会产生错误。对已经初始化的常量赋值会产生警告。

nil: 代表 undefined 的值。

__FILE__: 当前源文件的名称。

__LINE__: 当前行在源文件中的编号。



比较运算符

11

ruby也支持并行赋值:

a, b, c = 10, 20, 30
a, b = b, c



特殊运算符

defined? 是一个特殊的运算符,以方法调用的形式来判断传递的表达式(包括变量和方法等等)是否已定义。它返回表达式的描述字符串,如果表达式未定义则返回 nil。

foo = 42
defined? foo    # => "local-variable"
defined? $_     # => "global-variable"
defined? bar    # => nil(未定义)
defined? puts        # => "method"
defined? puts(bar)   # => nil(在这里 bar 未定义)


::运算符


可以通过在方法名称前加上类或模块名称和 . 来调用类或模块中的方法。你可以使用类或模块名称和两个冒号 :: 来引用类或模块中的常量。

:: 是一元运算符,允许在类或模块内定义常量、实例方法和类方法,可以从类或模块外的任何地方进行访问。


在 Ruby 中,类和方法也可以被当作常量。

只需要在表达式的常量名前加上 :: 前缀,即可返回适当的类或模块对象。

如果 :: 前的表达式为类或模块名称,则返回该类或模块内对应的常量值;如果 :: 前未没有前缀表达式,则返回主Object类中对应的常量值。

MR_COUNT = 0        # 定义在主 Object 类上的常量
module Foo
  MR_COUNT = 0
  ::MR_COUNT = 1    # 设置全局计数为 1
  MR_COUNT = 2      # 设置局部计数为 2
end
puts MR_COUNT       # 这是全局常量
puts Foo::MR_COUNT  # 这是 "Foo" 的局部常量

11



版权声明:本文为qq_43212582原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。