Ruby: Всё есть выражение
Кроме того, что в Ruby всё есть объект, практически всё — ещё и выражение. Что это значит? Возьмём для примера условные конструкции, например, if. if в большинстве языков — это конструкция языка, которая может появляться только в определенных местах. Её нельзя использовать в составе каких-то выражений. В Ruby это не так:
# Так как if выражение, значит
# мы можем присваивать результат его выполнения
a = if 5 > 3
'yes'
else
'no'
end
puts a # => 'yes'То же самое касается любых других конструкций, вплоть до определения функций/методов, модулей, классов:
# В f попадает не сама функция, а её имя в виде символа
f = def foo
end
puts f # :fooЗачем это нужно? Чем больше языковых конструкций реализовано в виде выражений, тем более выразительным является язык. В таком языке больше возможностей за счёт комбинирования конструкций, как в примере с if.
Задание
Реализуйте функцию invert_case(), которая меняет в строке регистр каждой буквы на противоположный.
invert_case('Hello, World!') # hELLO, wORLD!
invert_case('I loVe JS') # i LOvE jsПолезные методы:
upcase()– перевод строки в верхний регистрdowncase()– перевод строки в нижний регистр- each_char() – обход строки побуквенно
Ruby: Всё есть выражение
Кроме того, что в Ruby всё есть объект, практически всё — ещё и выражение. Что это значит? Возьмём для примера условные конструкции, например, if. if в большинстве языков — это конструкция языка, которая может появляться только в определенных местах. Её нельзя использовать в составе каких-то выражений. В Ruby это не так:
# Так как if выражение, значит
# мы можем присваивать результат его выполнения
a = if 5 > 3
'yes'
else
'no'
end
puts a # => 'yes'То же самое касается любых других конструкций, вплоть до определения функций/методов, модулей, классов:
# В f попадает не сама функция, а её имя в виде символа
f = def foo
end
puts f # :fooЗачем это нужно? Чем больше языковых конструкций реализовано в виде выражений, тем более выразительным является язык. В таком языке больше возможностей за счёт комбинирования конструкций, как в примере с if.
Задание
Реализуйте функцию invert_case(), которая меняет в строке регистр каждой буквы на противоположный.
invert_case('Hello, World!') # hELLO, wORLD!
invert_case('I loVe JS') # i LOvE jsПолезные методы:
upcase()– перевод строки в верхний регистрdowncase()– перевод строки в нижний регистр- each_char() – обход строки побуквенно
Ваше упражнение проверяется по этим тестам
# frozen_string_literal: true
require 'test_helper'
require_relative 'index'
describe 'function' do
it 'should works' do
assert { invert_case('Hello, World!') == 'hELLO, wORLD!' }
assert { invert_case('I loVe JS') == 'i LOvE js' }
end
endРешение учителя откроется через:
20:00
