2009-02-06 10 views

Odpowiedz

39

Ruby to "mocny typowany".

Silne pisanie oznacza, że ​​typ obiektu (nie w sensie OOP, ale w sensie ogólnym) jest sprawdzany przed wykonaniem na nim operacji wymagającej określonego typu.

Słabe pisanie oznacza, że ​​nie jest wykonywane sprawdzanie, aby operacja zakończyła się powodzeniem na obiekcie. (Na przykład, gdy funkcja dostęp ciąg jak i tablicę pływaków, jeśli nie sprawdzanie typu odbywa się wtedy operacja jest dozwolona)

Edit: Minęło 6 lat od chwili ta odpowiedź została wysłana i myślę, że gwarantuje pewne dodatkowe wyjaśnienia:

biegiem lat pogląd, że „bezpieczeństwo typ to tarcza nie absolutna” zaczęły być wykorzystywane na korzyść rozumieniu binarny (tak/nie)

Ruby jest „silniejszy” wpisane (z "er") niż większość typowych języków dynamicznych. Fakt, że ruby ​​wymaga jawnych instrukcji konwersji IE: Array ("foo"), "42" .to_i, Float (23), przybliża dial znakowy Ruby do "Strong Typed" końca spektrum niż "słabe wpisane" .

Więc powiedziałbym „Ruby jest silniejsza wpisany język dynamiczny niż w większości popularnych języków dynamicznych”

+0

Dziękuję za wyjaśnienia. Pomógł. :). 1 dla ciebie. – Chirantan

+23

Pisanie statyczne nie * oznacza * silnego pisania. Na przykład C jest statycznie wpisane, ponieważ kompilator zna typ każdej zmiennej, ale nie jest silnie wpisany, ponieważ pamięć jest po prostu pamięcią i może być traktowana w dowolny sposób przez program. – yfeldblum

+0

@Justice, myślę, że masz punkt ... –

-2

Zbyt uproszczona odpowiedź brzmi, że zarówno ruby, jak i javascript są słabo napisane.

Jednak to pytanie nie jest tak jednoznaczne, jak mogłoby się wydawać - patrz this wikipedia article, aby uzyskać bardziej dogłębną dyskusję na temat różnicy między językami silnie i słabo napisanymi.

+2

wydaje się być w sprzeczności z: http://www.rubyfleebie.com/ruby-is-dynamically-and-strongly-typed/ Curiouser i Curiouser ? – weepy

7

IMHO Ruby jest silnie, ale dynamicznie napisane.

11

Podczas może dostać się do argumentów dotyczących definicji tych perspektywie powiedziałbym:

Ruby dynamicznie i silnie wpisane podczas JavaScript jest dynamicznie i słabo wpisane.

25

Wikpedia etykiet go jako „dynamiczny («kaczka») wpisany”.

Jeśli chodzi o komentarz Popa o tym, że jest "na sztywno napisany" - nie jestem pewien, czy jego wyjaśnienie rzeczywiście pasuje do tego, co dzieje się pod kołdrą. MRI tak naprawdę nie "sprawdza", czy operacja może zostać wykonana na obiekcie; po prostu wysyła obiektowi wiadomość, a jeśli ten obiekt nie akceptuje tej wiadomości (przez deklarację metody lub przez jej obsługę w #method_missing) to barfuje. Jeśli środowisko wykonawcze zostało sprawdzone, aby upewnić się, że operacje są możliwe, funkcja #method_missing nie będzie działać.

Należy również zauważyć, że ponieważ wszystko w Ruby jest obiektem (i mam na myśli wszystko, co), nie jestem pewien, co powiedział na temat "nie w sensie oo" jest dokładne. W Ruby jesteś albo obiektem, albo wiadomością.

+3

to jest właściwie poprawna odpowiedź – andy

Powiązane problemy