2016-06-27 2 views
0

Я недавно натолкнулся на этот код, который вычисляет «4 * n!».Почему? Возврат «A» в ruby ​​

def moreThanUsual n 
    eval [*1..n, 4] * ?* 
    # 4 * Math.gamma(n + 1) 
end 

, который меня интересует ?*, и после экспериментов я видел:

>> ?* 
=> "*" 
>> ?a 
=> "a" 
>> ?1 
=> "1" 
>> ?8 
=> "8" 
>> ?83 
SyntaxError: (irb):32: syntax error, unexpected '?' 
    from /usr/local/bin/irb:11:in `<main>' 
>> ?ab 
SyntaxError: (irb):33: syntax error, unexpected '?' 
    from /usr/local/bin/irb:11:in `<main>' 

Что такое этот странный оператор, который принимает только один исходящий characterright против него, и изменяет его в строку?

+0

Да, это просто короткая рука для создания односимвольной строки в Ruby. Почти никто не использует его, потому что он настолько неясен. –

+0

Это буквально символ, который принимает один символ вправо и превращает его в строку. – meagar

ответ

1

Префикс вопросительного знака дает один символ; тот, который вы пишете сразу после него.

Смежные вопросы