Wat zijn de regels voor ruimtes in Ruby?

a = [2,4,5]
a.count-1 => 2
a.count - 1 => 2

Maar

a.count -1 => 0

Wat veroorzaakt dit gedrag? Waarom gebeurt het niet als a een geheel getal is (en geen array)?

Ook heb ik gemerkt dat er geen spatie mag zijn tussen een methode naam en de haakjes die volgt (voor parameters). Waarom is dat?

Ruby 1.9.2

3

3 antwoord

Omdat methoden zonder haakjes kunnen worden aangeroepen, is dit:

a.count - 1

Betekent aftrekken 1 van a.count , terwijl

a.count -1 # is like a.count(-1)

Betekent dat de methode a.count met -1 als argument wordt gebruikt. Het gebeurt niet wanneer a een geheel getal is, omdat gehele getallen niet de methode count hebben. Je moet gewoon voorzichtig zijn terwijl je typt.

6
toegevoegd
Vermeldenswaard is dat in het geval van a.count -1 , - nog steeds een methode is. Zie hier: rubyinside.com/& hellip;
toegevoegd de auteur Alex Peattie, de bron

a.count -1 is equivalent to a.count(-1).

Het geeft het aantal keren terug dat -1 in uw array is opgenomen.

a = [-1, 3, 4]
a.count -1 => 1
1
toegevoegd
a.count - 1 # you are subtracting 
a.count -1  # you are doing a.count(-1)

Weet je zeker dat je geen spatie tussen een methode naam en de parens kunt plaatsen? Ik deed het gewoon in robijn 1.9.2 en het werkt prima. Bijvoorbeeld

a.product([3])
a.product ([3])
1
toegevoegd