You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
В много други езици числата и примитивните типове не са обекти. Ruby е
60
59
повлиян от Smalltalk и дава възможност за извикването на методи на
@@ -78,7 +77,6 @@ Ruby е считан за гъвкав език поради факта, че п
78
77
79
78
y = 5.plus 6
80
79
# y е равно на 11
81
-
{: .code .ruby-code}
82
80
83
81
Операторите в Ruby всъщност представляват синтактична „захар“ за
84
82
методите. Те също могат да бъдат променени.
@@ -98,7 +96,6 @@ Ruby е считан за гъвкав език поради факта, че п
98
96
%w[Google Yahoo MSN].map do |engine|
99
97
"http://www." + engine.downcase + ".com"
100
98
end
101
-
{: .code .ruby-code}
102
99
103
100
В горния отрязък код блокът е реализиран в `do ... end` конструкцията.
104
101
Методът `map` се прилага за списъка от думи в блока. Много други методи
@@ -120,7 +117,6 @@ Ruby е считан за гъвкав език поради факта, че п
120
117
class MyArray
121
118
include Enumerable
122
119
end
123
-
{: .code .ruby-code}
124
120
125
121
Като цяло рубистите смятат, че това е по-изчистен начин за реализиране на идеята за множествено наследяване, което по-принцип е сложно и ограничаващо в много от случаите. ### Визуално представяне на Ruby код
Copy file name to clipboardExpand all lines: bg/documentation/ruby-from-other-languages/index.md
-18
Original file line number
Diff line number
Diff line change
@@ -7,14 +7,12 @@ lang: bg
7
7
Когато за първи път се сблъскате с код писан на Ruby е вероятно да ви напомни на езици за програмиране, които вече ползвате. Това е направено с цел. Много от синтаксиса е заимстван от Perl, Python и Java (както от други езици), за това научаването на Ruby би било много по-лесно. Този страница е разделена на две секции. Първата е обобщение на нещата, които ще видите от езика \_X\_ в Ruby. Втората секция е посветена на някои от основните принципи на езика. h2. Какво да очакваме \* [Oт C/C++ към Ruby](/bg/documentation/ruby-from-other-languages/to-ruby-from-c-and-c-/) \* [Oт Java към Ruby](/bg/documentation/ruby-from-other-languages/to-ruby-from-java/) \* [Oт Perl към Ruby](/bg/documentation/ruby-from-other-languages/to-ruby-from-perl/) \* [Oт PHP към Ruby](/bg/documentation/ruby-from-other-languages/to-ruby-from-php/) \* [Oт Python към Ruby](/bg/documentation/ruby-from-other-languages/to-ruby-from-python/) h2. Важни неща в езика Това са някои насоки за нещата, с които ще се запознаете при изучаването на Ruby. h3. Итерация Две от нещата, с които може би не сте се сблъсквали са \"блоковете\" и итераторите. Вместо да използваме цикъл с индекс ( както в C, C++ или в ранните версии на 1.5 Java), итерацията на списък (в Perl <tt>for (@a) \{...}</tt> или в Python <tt>for i in aList: ...</tt>) може да се осъществи с : <notextile markdown="1"> some_list.each do |this_item|
8
8
# операции за всеки елемент this_item.
9
9
end
10
-
{: .code .ruby-code}
11
10
12
11
</notextile>
13
12
14
13
За повече информация относно @each@ (и неговите приятели @collect@, @find@, @inject@, @sort@ и т.н.) можете да прочетете с командата @ri Enumerable@ (и <tt>ri Enumerable#*име\_на\_метод*</tt>). h3. Всичко има стойност Няма разлика между expression и statement. Всичко има стойност, дори и тя да бъде \*nil\*: <notextilemarkdown="1"> x = 10
h3. Променливи константи Константите всъщност не са константи. Ако промените съдържанието на съществуваща константа ще получите предупреждение, но това няма да наруши изпълнението на програмата. Това не значи, че трябва да предефинирате константите. h3. Конвенции при наименуването Ruby ни \"принуждава\" да ползваме някои конвенции при наименуването. Ако идентификаторът започва с главна буква, той е константа. Ако започва с $, той е глобална променлива. Ако започва с `@` той е променлива на инстанцията, а с `@@` се именоват клас променливите. Въпреки това може да ползваме главна буква за името на метод, въпреки, че това може да доведе до объркване: <notextile markdown="1"> Constant = 10
Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00
150
-
{: .code .ruby-code}
151
139
152
140
</notextile>
153
141
@@ -168,7 +156,6 @@ lang: bg
168
156
# Other objects are not affected
169
157
other_car = Car.new
170
158
other_car.inspect # => Cheap car
171
-
{: .code .ruby-code}
172
159
173
160
</notextile>
174
161
@@ -182,7 +169,6 @@ lang: bg
182
169
__:a, :b, 10
183
170
# => Method __ was called, but not found. It has these
184
171
# arguments: a, b, 10
185
-
{: .code .ruby-code}
186
172
187
173
</notextile>
188
174
@@ -192,7 +178,6 @@ lang: bg
192
178
1.+(2)
193
179
# Which is the same as this:
194
180
1.send "+", 2
195
-
{: .code .ruby-code}
196
181
197
182
</notextile>
198
183
@@ -203,13 +188,11 @@ lang: bg
203
188
adder = block { |a, b| a + b }
204
189
# adder is now a Proc object
205
190
adder.class # => Proc
206
-
{: .code .ruby-code}
207
191
208
192
</notextile>
209
193
210
194
Можем да създаваме блокове извън извиквания към методи чрез Proc.new или чрез метода `lambda`. Впрочем, методите са обекти: <notextilemarkdown="1"> method(:puts).call "puts is an object!"
0 commit comments