在本教程中,将探讨使用Ruby开始编程所需的基本语法,以及如何在30分钟内学习并使用Ruby编程语言。

注:如果您还尚未安装Ruby开发环境,请访问环境设置页面并按照说明安装: http://www.yiibai.com/ruby/ruby-installation.html

Ruby历史

Ruby被许多人认为是一种“新”编程语言,但实际上是由一个叫作Matz的开发人员于1994年发布的。 Matz自我描述是一个“语言极客”,也是Perl大粉丝。 他对Ruby的想法是创建一种像Perl这样灵活而强大的语言,但在其语法上更具表现力 - 甚至可以具有类似于英语那样的可读性。

Ruby在日本迅速成长,直到2000年,真的没有关于除了日本语言以外的任何文档。所以如果想要学习Ruby,那得必须先学习日语。 敏捷编程的先驱Dave Thomas被Ruby迷住,并决定创建Ruby的其它语言文档。

自Ruby有了英文开始,Ruby就开始在英语世界中增长,尽管缓慢。 系统管理员变得流行,编写维护和“粘贴”脚本 - 类似Perl的用法。从2000年到2005年美国的Ruby社区已达数百个。

在2004-2005年,一家名为37Signals的芝加哥公司聘请了一名年轻的开发人员来构建一个Web应用程序。 公司给了他几乎完全的执行自由; 他们只关心客户端的设计和功能。 当时主要的Web技术是Perl CGI,PHP,Java的JSP和Microsoft的ASP。 但是他们都是有点痛苦,但DHH的**大卫(DHH)**选择了自己的方向。他在Ruby中写了这个应用程序。 他依靠核心库和少数库的帮助下,同时自己创建了整个堆栈(或多或少)。37Signals在Web应用程序使用Ruby来编写,这个项目今天被称为Basecamp

当建立了Basecamp,DHH就会从中提取出Web框架。 这是一个非常不同的方法,从Java/Sun.NET/Microsoft,Web框架都是从高处往下传播。 相反,Rails从现实世界中抽出来。 它侧重于常规配置,使常见问题更容易解决。

这种方法是一个很大的打击,Rails自从以来一直推动了Ruby/Rails社区的发展。 现在,在亚马逊上有数十本书,全球近一百个会议,有成千上万的人是Ruby/Rails开发人员。

如果你想学习Rails,需要先学习Ruby! 现在就开始咯 …

1. Ruby解释器

Ruby是一种“解释”的编程语言,它不能直接在处理器上运行,它的代码必须馈送到称为“虚拟机”或虚拟机的中间件。 虚拟机的一方面是Ruby代码,另一方面则是操作系统和处理器。 这种方法的好处是您可以编写一次Ruby代码,就可以在许多不同的操作系统和硬件平台上执行了。

Ruby程序无法运行自己的程序,它需要加载虚拟机。 使用VM执行Ruby的方式有两种:通过IRB和命令行。

从命令行运行Ruby代码

这是编写Ruby代码的耐用方法,因为要将指令保存到文件中。 该文件可以备份,传输,添加到源代码管理等。

一个Ruby代码文件示例

这里创建一个名称为:first-ruby.rb的文件,如下所示:

#!/usr/bin/ruby   
# filename : first-ruby.rbclass Sampledef helloputs "Hello, World!"end
ends = Sample.new
s.hello

那么可以这样运行程序:

当您运行ruby first-ruby.rb时,实际上正在加载ruby虚拟机,然后再加载first-ruby.rb文件中的代码。

从IRB运行Ruby代码

Ruby是第一批语言推广所谓“REPL”:阅读,评估,打印,循环的编程语言。想像它就像一个计算器 - 就像在每个完整的指令中,IRB执行这些指令并显示结果。

IRB最好用作实验的便笺簿。 许多开发人员在编写他们的“真实”程序时,一般都保持IRB窗口打开,使用它来记住某个方法如何工作或用于调试某个代码块。

要打开IRB进行实验,可通过打开终端(Mac)或命令提示符(Win)并打开或输入irb来启动IRB。以Windows系统为例,如下所示 -

注: 按 Ctrl + D 可退出 irb 模式。

2. Ruby变量

编程都是要创建抽象的代码来描述和处理数据,要创建抽象,必须要为在代码中分配名称来表示事物。 变量只不过是为数据创建一个名称的一种方式。

创建和分配变量

在某些语言中,需要在为一个变量分配值之前声明这个变量。 当为变量分配值时,会自动创建Ruby变量。下面来试试一个例子:

a = 250表示创建一个名称为a的变量,并将值250存储到其中。

右边优先

在英文表达式中,是从左到右阅读,所以从左到右读取代码是很自然的。 但是当使用单个等于号(=)评估求值一个赋值时,Ruby实际上首先评估求值右侧。 举个例子:

irb(main):010:0> b = 10 + 20
=> 30
irb(main):011:0> b
=> 30
irb(main):012:0>

上面示例中,首先对10 + 20进行评估求值,再将求值结果存储到b变量中。

灵活输入

Ruby的变量可以容纳任何类型的数据,甚至可以更改其持有的数据类型。 例如:

irb(main):012:0> c = 200
=> 200
irb(main):013:0> c = "Flexible Typing"
=> "Flexible Typing"
irb(main):014:0> c
=> "Flexible Typing"
irb(main):015:0> c = 0.0001
=> 0.0001
irb(main):016:0> c
=> 0.0001
irb(main):017:0>

第一次赋予c变量为一个200的整数值。第二次赋值是将c变量的值更改其为“Flexible Typing”。

命名变量

大多数Ruby变量(局部变量)的命名都有一些由VM强制的要求。这些要求约定如下 -

  • 始终以小写字母开头(允许下划线,虽然不常见)
  • 不能使用空格
  • 不要包含特殊字符,如$@

除了那些虚拟机的要求,Ruby开发者对变量名称有几个常见风格偏好:

  • 使用蛇形大小写,即:名称中的每个字都是小写字母,并用下划线(_)连接
  • 以其内容的含义命名,而不是其内容的类型
  • 不使用缩写

好的变量名的示例如下:counttotal_productsstudents_in_classfirst_lesson

一些不好的Ruby变量名称的几个例子,如下所示:

  • studentsInClass – 使用骆驼案而不是蛇形大小写,应该命名为:students_in_class
  • 1st_lesson – 变量不能以数字开头,应该命名为:first_lesson
  • students_array – 包括名称的数据类型,应该命名为:students
  • sts – 不使用缩写,应该命名为:students

练习

使用IRB存储每个以下变量名称的值。 哪些名字是好的,哪些是是无效的Ruby变量名称,哪些是有效的,哪些是Ruby不建议使用的风格?

  • time_machine
  • student_count_integer
  • homeworkAssignment
  • 3_sections
  • top_ppl

3. 字符串

在现实世界中,字符串是将一个个字符串联起来的。 编程中的字符串与真实字符串无关。

编程中的字符串用于存储字母和数字的集合。它可以是一个单一的字母,如“a”,或者像“hi”这样一个单词,或者“Hello my friends.”这样的一段话。

编写一个字符串

Ruby字符串被定义为一个引号("),后跟零个或多个字母,数字或符号,后跟一个闭包引号(")。 最短的字符串称为空字符串:""。 单个字符串包含文本的段落甚至页面也很常见。

子字符串

通常使用字符串,可从整个长字符串提取出来的一部分 - 这提取出来的部分称为子字符串。在 irb 尝试这些例子:

irb(main):017:0> string = "Ruby in 30 Minutes at yiibai.com"
=> "Ruby in 30 Minutes at yiibai.com"
irb(main):018:0> string[0..8]
=> "Ruby in 3"
irb(main):019:0> string[8..16]
=> "30 Minute"
irb(main):020:0> string[8..-1]
=> "30 Minutes at yiibai.com"
irb(main):021:0> string[8..-2]
=> "30 Minutes at yiibai.co"
irb(main):022:0>

正号和负号的位置

字符串中的字符每个都有一个位置编号,它们从零开始。 所以对于字符串中的开头“Ru”,“R”位置编号为0,“u”所在的位置编号为1

要在主字符串中提取出一个子串,可指定提取的起始位置和结束位置。 因此,上面的string[0..8]提取出位置从08的字母,也就是:“Ruby in 3”。

Ruby解释负的位置从字符串的末尾返回。所以在上面示例中,结尾的字符串“com”的字母分别对应为“m”位于-1,“o”位于-2 和 “c”位于-3

所以如果一个字母同时有正数和负数的位置,那么应该使用哪个? 建议使用正数,因为这样它们更容易理解。 但是,如果要基于字符串末尾查找东西(例如“该字符串的最后一个字符是什么?”),则使用负数指定位置。

常用的字符串方法

在IRB中使用字符串(对象)中一些常用的方法。

.length

length方法用于求出字符串中有多少个字符(包括空格):

irb(main):022:0> string = "0123456789"
=> "0123456789"
irb(main):023:0> string.length
=> 10
irb(main):024:0> string = "maxsu"
=> "maxsu"
irb(main):025:0> string.length
=> 5
irb(main):026:0>

尝试:计算你的名字的总长度

.split

有时想要将一个字符串分成几部分。 例如,假设有一个存储为字符串的句子,并将其分解成单词:

C:\Users\Administrator>irb
irb(main):001:0> string = "This is my sample sentence."
=> "This is my sample sentence."
irb(main):002:0> string.split
=> ["This", "is", "my", "sample", "sentence."]
irb(main):003:0>

.split方法返回一个数组,这将在后面的部分讲解中了解到。 它默认使用空格(“”)字符将字符串分割成多个部分。

.split使用参数

但有时要分割的不是一个带有空格的字符。 .split方法接受一个参数来指定分隔符,看看下面示例就明白了。

irb(main):003:0> numbers = "1,2,3,4,5,6,7,8"
=> "1,2,3,4,5,6,7,8"
irb(main):004:0> numbers.split
=> ["1,2,3,4,5,6,7,8"]
irb(main):005:0> numbers.split(",")
=> ["1", "2", "3", "4", "5", "6", "7", "8"]
irb(main):006:0>

在第一次分割的调用中,它尝试使用空格作为分隔符,但字符串中没有分隔符,所以得到一个整个字符串的数组。 在第二次尝试中,指定使用逗号(",")作为分隔符,所以得到一个8个数字值的数组。

.sub 和 .gsub

这两种方法可以用来替换字符串的部分。它们就像在文字处理器中使用“查找和替换”。 .sub替换只发生一次。 而.gsub全局替换的缩写,替换所有的发生(如“全部替换”)。

对于.sub.gsub,需要指定两个参数:首先是要替换的子字符串,然后再替换要替换的字符串。

irb(main):013:0> greeting = "Hello, Hello Everyone!"
=> "Hello, Hello Everyone!"
irb(main):014:0> greeting.sub("Hello","Hi")
=> "Hi, Hello Everyone!"
irb(main):015:0> greeting.gsub("Hello","Hi")
=> "Hi, Hi Everyone!"
irb(main):016:0>

组合字符串和变量

将变量的值与字符串相结合这是在开发应用程序中最经常使用的。 例如,现在从下面这个例子开始:

"Good morning, ?? !"

当把上面语句放入IRB时,它只是打印输出同一个字符串。 如果编写一个应用程序,希望它以用户名而不是“??”来跟用户打招呼,那么需要怎么做?

需要做的就是将变量与字符串组合。有两种方法可以做到这一点。

方法-1. 字符串连接

第一种方法,可使用字符串连接,它将字符串与加号连接:

irb(main):021:0> name = "Maxsu"
=> "Maxsu"
irb(main):022:0> puts "Good morning, " + name + " ! "
Good morning, Maxsu !
=> nil
irb(main):023:0>

在第一行中,设置了一个name变量来保存名称。 在第二行,打印字符串“Good morning" 并结合"name“变量和字符串”!"的值。

方法-2. 字符串插值

第二种方法是使用字符串插值,将数据粘贴到字符串的中间。

字符串插值仅适用于双引号字符串。在字符串内使用插值标记#{}。 在这些括号中可以把任何变量或Ruby代码放入其中,这些变量或Ruby代码将被评估求值,其结果转换为一个字符串,并输出到外部字符串的那个位置。 上面的例子可以这样重写:

irb(main):023:0> name = "Maxsu"
=> "Maxsu"
irb(main):024:0> puts "Good morning, #{name}!"
Good morning, Maxsu!
=> nil
irb(main):025:0>

如果比较输出结果,就会看到它们输出的是完全相同的结果。 内插样式往往是输入较少的字符类型,较少的双引号打开/关闭,所以可避免加双引号时忘记书写对称(往往有输入多一个,少一个的问题)。

内插插入代码

还可以将任何Ruby代码或计算表达式内置在括号内,如下所示:

irb(main):025:0> modifier = "very "
=> "very "
irb(main):026:0> mood = "excited"
=> "excited"
irb(main):028:0> puts "I am #{modifier * 3 + mood} for today's play!"
I am very very very excited for today's play!
=> nil
irb(main):029:0>

首先对#{modifier * 3 + mood}代码块进行评估求值,然后将结果注入外部字符串中。

4. 符号

符号有点难以解释,它们是字符串和数字的一半。但是可以很容易识别一个符号,因为它是以冒号开始一个或多个字母,如:flag:best_friend

新程序员的符号

如果你是编程的新手,可将一个符号看作是一个几乎没有任何方法和没有字符串插值的被剥离下来的字符串。 将正确的字符串与类似符号的方法列表进行比较,如下所示:

2.1.1 :001> "hello".methods
2.1.1 :002> "hello".methods.count
2.1.1 :003> :hello.methods
2.1.1 :004> :hello.methods.count

有经验的程序员的符号

如果你是一个有经验的程序员,想象一个符号是一个“命名整数”。 符号引用的实际值无关紧要。 我们所关心的是,虚拟机内对该值的任何引用将返回相同的值。 因此,符号在全局符号表中定义,它们的值不能改变。

5. 数字值

数字有两种基本类型:整数(整数)和浮点数(有小数点)。
整数对于您和计算机来说都要容易一些。 您可以使用包括+-/*在内的整数的正常数学运算。 整数有一些方法可以用来做数学相关的事情,过调用5.methods方法就可看到一些常用的方法。

重复指令

重复执行指令在其他语言中的常见模式是for循环,用于重复执行某些指令一定次数。 例如,在JavaScript中可以写:

for(var i = 0; i < 5; i++){console.log("Hello, World");
}

对于循环是很常见的,但它们的代码不是很容易阅读。 因为Ruby的整数是它们拥有方法的对象。 其中的一个方法:times是重复执行指令的方法。

以Ruby样式重写上述循环:

5.times doputs "Hello, World!"
end

在这个例子中,使用times方法和具体的执行代码块。 在下一节中将讨论块。 但是请先在IRB中运行这个例子,看看结果会是什么。

6. 块

块是Ruby中经常使用的强大概念。 可将块视为一组捆绑在其他地方使用的指令的方式。

块的开始和结束

在上一节中有一个使用.times方法的块用整数表示:

5.times doputs "Hello, World!"
end

该块以关键字do开始,以关键字end结束。 do/end风格总是可以被Ruby解释器所接受的。

支架块

当块仅包含单个指令时,经常使用备用标记{}来标识块的开始和结束:

5.times{ puts "Hello, World!" }

块被传递给方法

那么使用块来做什么? 块可以用来作为传递给方法调用的参数。

例如,如果调用了5.times,Ruby就不会知道要执行五次了。当通过块时,就会说“这里是希望每次运行的说明”。

块中有很多的方法。 就像前面看到的.gsub方法一样,字符串早就为每个匹配运行一个块:

irb(main):038:0> "this is a sentence".gsub("e"){ puts "Found an E!"}
Found an E!
Found an E!
Found an E!
=> "this is a sntnc"
irb(main):039:0>

请注意,"Found an E!"显示了三次,因为字符串中有三个E字母。

块参数

通常,在块内指示需要引用正在使用的值。 当在编写块代码时,可以在管道字符中指定一个块参数:

5.times do |i|puts "Hello, World! "
end

什么值应该放入该块参数,这取决于要调用的方法。 在本示例中,times方法放入当前运行的数值。尝试上面的块,观察输出,然后尝试这样修改:

5.times do |i|puts "#{i}: Hello, World!"
end

上面代码输出结果如下 -

irb(main):045:0> 5.times do |i|
irb(main):046:1*   puts "#{i}: Hello, World!"
irb(main):047:1> end
0: Hello, World!
1: Hello, World!
2: Hello, World!
3: Hello, World!
4: Hello, World!
=> 5
irb(main):048:0>

.gsub在找到的字符串中传递。 尝试这个(用括号表示法):

irb(main):048:0> "this is a sentence".gsub("e"){|letter| letter.upcase}
=> "this is a sEntEncE"
irb(main):049:0>

在上面结果中看到gsub正在使用块的结果作为原始匹配的替换。

7.数组

通常当编写程序时,我们需要处理数据的集合。先来看看最常见的数据集合 - 数组。

可视化模型

数组是数字索引列表。 想象一下,有一张空白的纸,画了三个小盒子:

 ---  ---  ---
|   ||   ||   |---  ---  ---

可以按照从左到右对每一个位置进行编号:

 ---  ---  ---
|   ||   ||   |---  ---  ---0    1    2

然后在每个框中放入字符串(或其它值):

 -------------  ---------  ----------
| "Breakfast" || "Lunch" || "Dinner" |-------------  ---------  ----------0            1           2

现在变成一个有三元素的数组。 Ruby数组的大小可以增长和缩小,所以如果添加一个元素,它通常会在结束位置添加,索引值也会变递增1

 -------------  ---------  ----------  -----------
| "Breakfast" || "Lunch" || "Dinner" || "Dessert" |-------------  ---------  ----------  -----------0            1           2           3

请注意,最后一个元素的位置总是比元素的数量小1

数组中在索引为2位置对应的数据值为“Dinner”。最后一个元素对应的数据值为“Dessert”。

代码中的数组

以下是Ruby代码中相同建模的方法:

irb(main):049:0> meals = ["Breakfast", "Lunch", "Dinner"]
=> ["Breakfast", "Lunch", "Dinner"]
irb(main):050:0> meals << "Dessert"
=> ["Breakfast", "Lunch", "Dinner", "Dessert"]
irb(main):051:0> meals[2]
=> "Dinner"
irb(main):052:0> meals.last
=> "Dessert"
irb(main):053:0>

在上面代码运行结果中,观察到…

  • 该数组是通过将数据片段放在方括号([])之间并用逗号分隔来创建的。

  • 通过使用“铲子运算符”(<<)添加一个元素到数组的末尾

  • 通过使用方括号([])在指定索引位置来获取元素

  • 数组中一些方便的方法,如.last

常用数组方法

数组有很多很酷的东西。 以下是几个例子:

.sort方法

sort方法将返回一个新的数组,其中元素是已经被排序过了。 如果元素是字符串,它们将以字母顺序返回。 如果它们是数字,它们将按升值顺序回来。尝试下面示例:

irb(main):056:0> array1 = ["this", "is", "an", "array"]
=> ["this", "is", "an", "array"]
irb(main):057:0> array1.sort
=> ["an", "array", "is", "this"]
irb(main):058:0> array1
=> ["this", "is", "an", "array"]
irb(main):059:0>

可以使用sort方法重新排列元素的顺序。使用each方法遍历每个元素。使用join方法将它们一起混合成一个字符串。使用index方法找到特定元素的地址。可以使用include?方法询问数组是否包含指定的元素。

使用数组只要需要一个列表,其中元素是以特定的顺序排序的。

其他的尝试

在数组上尝试下面这些常见的方法:

  • each
  • collect
  • firstlast
  • shuffle

可以参考这个文档了解更多详细信息:http://www.ruby-doc.org/core-2.1.2/Array.html

8.哈希

哈希是数据的集合,哈希中的数据的每个元素是按名称来寻址。作为一个比喻,想一下冰箱。 如果要跟踪放在冰箱内的东西,我们并不关心它的放在哪里 - 顺序并不重要。 相反只是按名称去组织这些东西。如名称“apples”可能具有值3,则名称“oranges”可能具有值1,并且“carrots”值为12。 在本示例中,就可使用哈希。

键/值对

哈希是无序的集合,其中数据被组织成“键/值对”。 哈希的语法更复杂,需要一些习惯:

irb(main):001:0> produce = {"apples" => 3, "oranges" => 1, "carrots" => 12}
=> {"apples"=>3, "oranges"=>1, "carrots"=>12}
<e are #{produce['oranges']} oranges in the fridge."
There are 1 oranges in the fridge.
=> nil
irb(main):003:0>

键用作为地址,值是该地址的数据。 在produce哈希中有包括“apples”和“oranges”的键,其值分别为123。当创建哈希时,键和值使用=>符号链接。 所以哈希从一个大括号{开始,(由一个键,一个=>标识符和一个由逗号分隔的值组成的零个或多个条目,然后以一个关闭的大括号}结束。

再尝试一些代码:

irb(main):006:0> produce["grapes"] = 219
=> 219
irb(main):007:0> produce
=> {"grapes"=>219}
irb(main):008:0> produce["oranges"] = 66
=> 66
irb(main):009:0> produce
=> {"grapes"=>219, "oranges"=>66}
irb(main):010:0> produce.keys
=> ["grapes", "oranges"]
irb(main):011:0> produce.values
=> [219, 66]
irb(main):012:0>

在这些说明的第一行中,向哈希添加了一个新值。 由于“grapes”键不在原始哈希中,所以它的值为221。 哈希中的键必须是唯一的,所以当对product [“oranges”]使用相同的语法时,它会看到键“oranges”已经在列表中,并且用6替换值。keysvalues方法会列出所有键和值。

简化哈希语法

通常会使用符号作为哈希的键。 当所有的键都是符号时,可以使用一个速记语法:

irb(main):012:0> produce = {apples: 3, oranges: 1, carrots: 12}
=> {:apples=>3, :oranges=>1, :carrots=>12}
irb(main):013:0> puts "There are #{produce[:oranges]} oranges in the fridge."
There are 1 oranges in the fridge.
=> nil
irb(main):014:0>

请注意,键以冒号结尾,而不是以冒号开始,即使这些是符号。 这个简化的语法能在Ruby 1.9及更高版本配合使用。要了解正在使用的是哪个版本的Ruby,可在控制台中输入“ruby -v”。

9. 条件

条件语句评估求值结果为truefalse。 最常见的条件运算符是==(相等),>(大于),>=(大于或等于),<(小于)和<=(小于或等于)。

一些对象也有返回truefalse的方法,因此它们在条件语句中使用。 例如,每个对象都有方法.nil? 只有当对象为nil时才返回:true。 数组有一个名称为.include的方法 如果数组包含指定的元素,则返回true。 Ruby中的约定方法名称以结尾返回truefalse

条件分支/指令

为什么要有条件语句? 最常见的是控制条件指令,特别是:if/elsif/else结构。在IRB中添加一个这样的方法来写一个例子:

def water_status(minutes)if minutes < 7puts "The water is not boiling yet."elsif minutes == 7puts "It's just barely boiling"elsif minutes == 8puts "It's boiling!"elseputs "Hot! Hot! Hot!"end
end# run method with difference parameter
water_status(5)
water_status(7)
water_status(8)
water_status(9)

尝试使用:water_status(5)water_status(7)water_status(8)water_status(9)运行该方法。

理解执行流程

minutes值为5时,执行结果是什么?因为minutes = 5小于7,所以打印出来的结果为:“The water is not boiling yet.

minutes值为7时,执行结果是什么?因为minutes值等于7,所以打印出来的结果为:“It's just barely boiling

minutes值为8时,执行结果是什么?因为minutes值等于8,所以打印出来的结果为:“It's boiling!

minutes值为9时,执行结果是什么?因为minutes = 9,它比较了前面的几个值:578,但是都没有匹配项,所以最后执行到else语句块中,打印出来的结果为:“Hot! Hot! Hot!

if语句可能的结构

if语句有以下可能的结构:

  • if语句的指令只有在语句为真时执行。
  • if语句后面可有零或多个elsif语句,其指令仅在语句为真时执行
  • if语句后面零或一个else语句,如果没有一个ifelsif语句为真,则执行else语句中的指令。

if/else if/else结构中只能在一个部分可以运行它的指令。例如,如果if是真的,Ruby将永远不会执行elseifelse,也就是说永远只执行其中一块。

相等与分配值

编写条件语句时遇到常见错误是书写===,以及它们的区别。

  • =符号表示赋值。表示“拿右边的东西,把它粘在左边的任何东西”
  • ==表示为这是一个问题。表示“右边的东西是等于左边的东西吗?”

还可以使用逻辑运算符组合条件语句。 最常见的是“逻辑与”和“逻辑或”。 在Ruby中,您可以使用这样的双符号(&&)来书写表示一个“逻辑和”。可以用这样的双管道(||)书写表示一个“逻辑或”。

10. Nil和虚无

什么是虚无? 当我们表达一个东西,没有确定它是什么东西的暂时可以叫它为:虚无,不是没有什么东西吗? 好的,这太多哲学了,这有确实点难解释了。

nil是Ruby中用于表达“虚无”的方式。

如果有三个鸡蛋,您吃三个鸡蛋,那么可能认为现在您“没有什么”蛋了,但是在鸡蛋方面有“0”个。0是什么?它是一个数字,它并不是“虚无”。

如果使用一个单词,如“hello”这样的字符串,那么删除“h”,“e”,“l”和“o”,你可能会认为没有什么,但是现在真的有“”,它是一个空字符串,并不是“虚无”。

nil是Ruby的虚无的想法的表示。 当要求不存在的东西时,通常会遇到这种情况。 例如,当查看数组时,创建了一个包含五个元素的列表,然后要获取列表中添加第六个元素。但是没有第六个元素,所以Ruby给了nil。 在第六个元素的地方它并不是空白(“”),也不是数字0,它是空/nil

编写Ruby代码时遇到的大部分错误是涉及nil值的。以为某个位置有数据值,试图使用使用这个数据值去做一些事情,但没有这样的数据值,不能做任何事情,所以Ruby引发了一个错误。

11. 对象,属性和方法

Ruby是面向对象的编程语言

Ruby是一种面向对象的编程语言,在与VM内部交互的所有东西都是对象。 每条数据都是一个对象。 对象保存的信息称为属性,可以执行对象的方法。

作为一个对象的例子,想像你是一个人。 你有像高度,重量和眼睛颜色的属性。 你有“走路”,“跑步”,“洗碗”和“白日梦”的方法。不同类型的对象具有不同的属性和方法。 在接下来的章节中,将介绍一些Ruby中常见的特定类型的对象。

类和实例

在面向对象编程中,我们定义了类,它们是类别或类型的东西的抽象描述。 它定义了该类型的所有对象的属性和方法。

定义一个类

例如,考虑对一个学校信息建模。要创建一个名为“Student”的类,表示学生的抽象。 Student类将定义如:first_namelast_nameprimary_phone_number的属性。 它可以定义一个用于学生自我介绍的方法:introduction

尝试在IRB编写上面代码:

class Studentattr_accessor :first_name, :last_name, :primary_phone_numberdef introductionputs "Hi, I'm #{first_name}!"end
end

attr_accessor方法是用于定义类的实例的属性。

创建类的实例

Student类本身不代表学生,这是学生信息表示模型。 要表示一个实际的学生,需要创建一个Student类的实例。

想像你就是一个学生,不是一个抽象的概念,因为你是一个实际的人。这个实际的人是Student类的一个实例 - 它是一个抽象思想的实现。一个实际的人具有属性:first_namelast_nameprimary_phone_number 的实际数据(比如:你的first_name是“爱华”,last_name是“”等等)。

另一方面,Student类有几个抽象的属性: first_namelast_nameprimary_phone_number,我们不能提前确定它们。

从文件运行Ruby

一般情况下,很少在IRB中定义类。这是因为IRB只是一个便签本(不能很好的保存代码),记得吗? 下面来看看如何从文件中运行Ruby。

  • 退出IRB会话(输入:exitCtrl + D)
  • 注意终端当前在哪个文件夹,进入你的“工作目录”(本教程中,代码都是写在:F:\worksp\ruby)
  • 使用纯文本编辑器创建一个名为student.rb的文件。
  • 将文件保存在student.rb文件中。
  • 从终端运行文件:
ruby student.rb

由于这个文件是空的,所以不应该得到任何输出。

创建Student

在文本编辑器中,开始编写类的结构:

class Studentend

在类的内部,通常使用def关键字定义一个或多个方法,如下:

class Studentdef introductionputs "Hi, I'm #{first_name}!"end
end

请注意,puts行正在计算求值一个名为first_name的方法,该方法返回学生的名字。下面可以进一步添加之前使用的三个属性:

class Studentattr_accessor :first_name, :last_name, :primary_phone_numberdef introductionputs "Hi, I'm #{first_name}!"end
end

运行文件

回到终端,尝试用ruby student.rb运行文件。应该不会看到有结果输出。

这是为什么呢? 上面步骤中已经定义了一个Student类,并表示一个学生有一个名为introduction的方法以及一些属性 - 但是实际上并没有创建Student类的实例或调用任何方法。

创建实例

当定义一个类后,还要创建类的一个实例,如下所示:

frank = Student.new

Student类上调用new方法并将其存储到变量frank中。当有了这个类的实例以后,就可以调用实例的方法来设置或获取其属性。

使用以下语法调用方法:object.method_name。在上面示例中,创建一个实例变量:frank,现在可以通过调用 frank.introduction 来获取学生的介绍信息了。

在文件中创建一个实例

student.rb文件的底部,在Student类的end关键字之后,添加以下内容:

frank = Student.new
frank.first_name = "Frank"
frank.introduction

最终完整的代码如下所示 -

class Studentattr_accessor :first_name, :last_name, :primary_phone_numberdef introductionputs "Hi, I'm #{first_name}!"end
endfrank = Student.new
frank.first_name = "Max"
frank.introduction

保存代码并返回到终端,再次执行ruby student.rb。 现在应该输出:“Hi, I'm Max!

方法参数

有时,方法使用一个或多个参数来完成一些事情。 例如,可以调用 frank.introduction('Minlee'),让它向Minlee介绍自己。参数可以是数字,字符串或任何种类的对象,下面修改introduction方法,以使用一个参数:

class Studentattr_accessor :first_name, :last_name, :primary_phone_numberdef introduction(target)puts "Hi #{target}, I'm #{first_name}!"end
endfrank = Student.new
frank.first_name = "Maxsu"
frank.introduction('Minlee')

保存代码并返回到终端,再次执行ruby student.rb。 现在应该输出:“Hi Minlee, I'm Maxsu!

返回值

在Ruby中,每次调用方法时都会得到一个值。 默认情况下,Ruby方法返回其评估求值的最后一个表达式的值。

现在向Stuent类中添加一个方法:favorite_number,如下所示 -

class Studentattr_accessor :first_name, :last_name, :primary_phone_numberdef introduction(target)puts "Hi #{target}, I'm #{first_name}!"enddef favorite_number7end
endfrank = Student.new
frank.first_name = "Maxsu"
puts "Maxsu's favorite number is #{frank.favorite_number}."

打开终端运行上面代码,应该看到:“Maxsu's favorite number is 7”。文件的最后一行调用的是favorite_number方法。 该方法的最后一行(只有)行是第7行。这个表达式作为方法的返回值,该值返回给调用该方法的任何人。在例子中,这7数字值返回并被插入到字符串中。

注意:写在最后,需要注意的是:这篇教程包教不包会!

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 19/7/25自学单片机C语言学习(keil)整理

    在昨天点亮第一个灯的基础上,让第一个灯闪烁 分析:1.点亮第一个发光二极管2.第一个发光二极管闪烁,就是亮灭亮灭变换 #include<reg52.h> //头文件 #define uint unsiged int //宏定义 uint a; //定义一个控制亮灭的时间的变量 sbit L1=P1^0; //位定义…...

    2024/4/28 16:42:43
  2. C# 执行CMD 命令

    Process prc = new Process(); prc.StartInfo.FileName = "cmd.exe"; //关闭 Shell 的使用! prc.StartInfo.UseShellExecute = false; //重定向标准输入 prc.StartInfo.RedirectStandardInput = true; //重定向标准输出 prc.StartInfo.RedirectStandardOutput = tru…...

    2024/4/29 0:32:45
  3. Ruby入门教程

    http://blog.csdn.net/cqfz123/archive/2006/10/24/1349050.aspx...

    2024/4/29 1:03:57
  4. delphi中XLSReadWrite控件的使用(2)---delphi XE下安装

    一、下载官方下载网址:http://www.axolot.com/components/download.htm从这里可以下载到从Delphi5到DelphiXE全部支持的版本。二、软件安装下载下来的文件是exe格式,可以直接安装,一路next即可。按照默认安装,会在:C:\Documents and Settings\All Users\Documents\RAD Studi…...

    2024/4/28 18:24:44
  5. Ruby教程

    eclipse下RDT插件下载网http://yehudakatz.com/2007/01/27/my-preferred-rails-development-environment/http://beans.seartipy.com/2006/08/12/develop-ruby-applications-using-eclipse-ide/ruby安装版的:http://www.ruby-lang.org/en/ 以下附近是Ruby教程的pdf并附案例,大家…...

    2024/4/20 11:46:07
  6. 图片和16进制 互相转换

    /** * 图片转十六进制 / public static class ImageToHex { public static void main(String[] args) throws Exception { try { StringBuffer sb = new StringBuffer(); FileInputStream fis = new FileInputStream(“C:\Users\wb-wsj429645\Desktop\RZE.jpg”); BufferedInpu…...

    2024/4/20 21:11:22
  7. c语言编写单片机技巧

    1. c语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的cpu,其汇编语言可能有所差异,所以不易移植。 c语言是一种结构化的高级语言。其…...

    2024/4/20 21:11:21
  8. 工作小记

    C#中使用PowerShell:Process process = new Process();// Redirect the output stream of the child process.process.StartInfo.UseShellExecute = true;process.StartInfo.FileName = "powershell";process.StartInfo.Arguments = @".\Build-TestSuite.ps1 &…...

    2024/4/20 23:56:14
  9. td8.0描述字段中文字符解决办法(字体大小控件下载)

    首先,还是很抱歉,最近工作实在太多,华为项目接连几个地方需要上线,版本问题搞的是焦头烂额。 这是一个困扰测试部由来以来已久的问题,刚跳槽过来的时候,就发现这个问题。由于开始熟悉产品的时间比较紧张,一直没有时间处理这个东西。不过,由于bug比较多,加上这个字段的…...

    2024/4/20 23:56:13
  10. 一个很好的ruby教程

    http://www.netbeans.org/download/flash/jruby_on_rails/jruby_on_rails.html...

    2024/4/20 23:56:11
  11. 关于C语言学习单片机的一些心得

    嵌入式系统以门槛高,入门难的方式拦截了无数的学者。然而单片机作为嵌入式的入门课,如何以一种正确的方法学习单片机将关系到是否能学习好嵌入式。 纵所周知,学习嵌入式先玩ptotel,再做单片机。Protel简单的来说就是一个做PCB板的纯英文的软件。学习ptotel前必需具备一定的…...

    2024/4/20 23:56:10
  12. ruby教程/学习网站推荐列表

    ruby教程/学习网站推荐列表 Ruby QuickRef(英文)http://www.zenspider.com/Languages/Ruby/QuickRef.html 漫画教程 Whys (Poignant) Guide to Ruby http://mislav.uniqpath.com/poignant-guide/book/chapter-3.html Ruby学习实例[中文]:http://www.yiibai.com/ruby RUB…...

    2024/4/20 23:56:09
  13. C#自定义控件在添加引用后不显示在工具箱的解决方法

    点击打开链接...

    2024/4/20 23:56:09
  14. Ruby语言入门教程

    Ruby语言入门教程是 一本入门的教程,下载地址见附件...

    2024/4/20 23:56:08
  15. C#中启动外部应用程序

    C#中我们可以通过Process类直接启动外部应用程序 代码如下:Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; //打开cmd p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStan…...

    2024/4/20 23:56:06
  16. js日历控件源代码下载

    原文:js日历控件源代码下载 源代码下载地址:http://www.zuidaima.com/share/1550463462640640.htmjs写的日历控件,具体看效果吧,简单截图如下:...

    2024/4/20 23:56:05
  17. 从零开始学C语言 第3版pdf

    链接:https://pan.baidu.com/s/1vNd1ox5ewNA13Ppe8xG3Kw 密码:2725本书为完整版,以下为内容截图:...

    2024/4/20 23:56:05
  18. JavaScript语言精髓与编程实践(第2版)

    JavaScript语言精髓与编程实践(第2版) 周爱民 著 ISBN978-7-121-15640-3 2012年3月出版 定价:79元 16开 476页 宣传语:以JavaScript视角看整个计算机语言的世界,小角度引来的大话题 内 容 简 介 本书详细讲述JavaScript 作为一种混合式语言的各方面特性,包括过程式、面向对…...

    2024/4/20 23:56:03
  19. java中进制的转换,Byte与16进制的转换方法

    java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下:首先关于最简单的二进制转换的方法有:十进制转成十六进制: String Integer.toHexString(int i) 十进制转成八进…...

    2024/4/20 23:56:02
  20. 【分享】郝斌老师C语言 教程 1 到 180课

    http://see.xidian.edu.cn/cpp/u/shipin/ C语言中文网在提供文字版教程的同时,也收集了包括5名老师的300集优秀视频教程。为了方便大家下载,我们将视频托管在了百度网盘,如果发现分享过期,请及时联系管理员(QQ:2382535200)。李明C语言视频教程下载,李明主讲,42集高清原…...

    2024/4/20 23:56:01

最新文章

  1. leetcode03-Longest Substring Without Repeating Characters

    题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 分析 很直观的思路就是遍历字符串&#xff0c;如果子串中没有重复元素…...

    2024/4/29 2:12:28
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 零基础 HTML 入门(详细)

    目录 1.简介 1.1 HTML是什么? 1.2 HTML 版本 1.3 通用声明 2.HTML 编辑器 3.标签的语法 4.HTML属性 5.常用标签 5.1 head 元素 5.1.1 title 标签 5.1.2 base 标签 5.1.3 link 标签 5.1.4 style 标签 5.1.5 meta 标签 5.1.6 script 5.2 HTML 注释 5.3 段落标签…...

    2024/4/22 16:14:13
  4. 探索进程控制第一弹(进程终止、进程等待)

    文章目录 进程创建初识fork函数fork函数返回值fork常规用法fork调用失败的原因 写时拷贝进程终止进程终止是在做什么&#xff1f;进程终止的情况代码跑完&#xff0c;结果正确/不正确代码异常终止 如何终止 进程等待概述进程等待方法wait方法waitpid 进程创建 初识fork函数 在…...

    2024/4/22 16:14:13
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/28 13:52:11
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/28 3:28:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/28 13:51:37
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/28 15:57:13
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57