ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #91  
Старый 06.04.2010, 23:57
Flcn
Познающий
Регистрация: 06.07.2009
Сообщений: 54
Провел на форуме:
65872

Репутация: 17
Отправить сообщение для Flcn с помощью ICQ
По умолчанию

Например у объекта класс .class это Class а superclass это Object
в свою очередь у Class класс это он сам и есть, а superclass это Module и так далее..
это в 1.8
 

  #92  
Старый 07.04.2010, 15:05
geezer.code
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме:
7452489

Репутация: 1359


По умолчанию

Цитата:
Сообщение от Flcn  
Например у объекта класс .class это Class а superclass это Object
в свою очередь у Class класс это он сам и есть, а superclass это Module и так далее..
это в 1.8
эээ... ну чтото вы путаете. class и superclass это не термины руби
class - это класс
superclass - это класс предок(наследованный класс)
Код:
class Tree
...
end

class Oak < Tree
...
end

myOak = Oak.new
Тогда классом для myOak будет Oak, a superclass для myOak будет Tree.

ответ придумайте сами. и то класс и это

Последний раз редактировалось geezer.code; 07.04.2010 в 15:49..
 

  #93  
Старый 08.04.2010, 18:17
lukmus
Постоянный
Регистрация: 18.11.2009
Сообщений: 709
Провел на форуме:
1410429

Репутация: 214


По умолчанию

как однозначно определить тип входной переменной для метода.
что-то типа
Код:
def (String a)
...
end
только это не верно
 

  #94  
Старый 09.04.2010, 17:41
geezer.code
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме:
7452489

Репутация: 1359


По умолчанию

Цитата:
Сообщение от lukmus  
как однозначно определить тип входной переменной для метода.
что-то типа
Код:
def (String a)
...
end
только это не верно
в чем сокровенный смысл?
Насколько я знаю, средствами языка - никак. Это противоречит принципу duck-typing.

P.S.
есть сторонние либы,которые позволяют провернуть такой трюк.
http://mephle.org/StrongTyping/
http://www.rubyist.net/~nobu/ruby/overload.tar.bz2

однако такой подход не ruby-style.

Последний раз редактировалось geezer.code; 09.04.2010 в 17:48..
 

  #95  
Старый 19.04.2010, 14:56
lukmus
Постоянный
Регистрация: 18.11.2009
Сообщений: 709
Провел на форуме:
1410429

Репутация: 214


По умолчанию

Цитата:
Сообщение от geezer.code  
в чем сокровенный смысл?
Насколько я знаю, средствами языка - никак. Это противоречит принципу duck-typing.

P.S.
есть сторонние либы,которые позволяют провернуть такой трюк.
http://mephle.org/StrongTyping/
http://www.rubyist.net/~nobu/ruby/overload.tar.bz2

однако такой подход не ruby-style.
можно и проще это сделать без сторонних библиотек, напр:
Код:
def fucn (a)
  if !(a.is_a? String) then return -1 end
  ...
end
но только это не круто
 

  #96  
Старый 20.04.2010, 12:06
geezer.code
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме:
7452489

Репутация: 1359


По умолчанию

Цитата:
Сообщение от lukmus  
можно и проще это сделать без сторонних библиотек, напр:
Код:
def fucn (a)
  if !(a.is_a? String) then return -1 end
  ...
end
но только это не круто
это не совсем то о чем я хотел написать.
эти либы дают возможность не просто проверить тип, а именно вызвать ту функцию, переданный аргумент которой соответствует принимаемому.
то есть банальная перегрузка методов, которая с самого начала не предусмотрена в языке.
 

  #97  
Старый 25.04.2010, 23:57
XPYMGT
Познающий
Регистрация: 11.04.2009
Сообщений: 47
Провел на форуме:
116295

Репутация: 2
По умолчанию

Что посмотрел я на этот руби выводы: он по ходу более объектно ориентированный чем питон, синтаксис у него избыточный(эти if then endif else endelse). Помню когда-то читал что тормознутый он, насколько слабее питона, никто не скажет? Покажите мне хотя бы одну программу на руби.
 

  #98  
Старый 26.04.2010, 00:17
lukmus
Постоянный
Регистрация: 18.11.2009
Сообщений: 709
Провел на форуме:
1410429

Репутация: 214


По умолчанию

Цитата:
Сообщение от XPYMGT  
Что посмотрел я на этот руби выводы: он по ходу более объектно ориентированный чем питон, синтаксис у него избыточный(эти if then endif else endelse). Помню когда-то читал что тормознутый он, насколько слабее питона, никто не скажет? Покажите мне хотя бы одну программу на руби.
metasploit, есть nmap на ruby, ROR итд, их немерянно, а насчет тормознутости ты частично не прав, вот тест скорости хабравцев:

по ООП он уступит только Smalltalk
 

  #99  
Старый 02.06.2010, 02:22
xciss
Новичок
Регистрация: 01.06.2010
Сообщений: 3
Провел на форуме:
6544

Репутация: 0
По умолчанию

Цитата:
Сообщение от geezer.code  
это не совсем то о чем я хотел написать.
эти либы дают возможность не просто проверить тип, а именно вызвать ту функцию, переданный аргумент которой соответствует принимаемому.
то есть банальная перегрузка методов, которая с самого начала не предусмотрена в языке.
такого конечно нету.
В том плане что красиво объявить аргументы функции не получится. Но можно создать прокси-объект и еще тонну извращений.

В общем я потихоньку копаю си и сорсы руби и могу сделать своё глупое заключение -> разработчики просто не стали париться.
(да и нафига оно надо? -> как уже кто-то здесь сказал: "return unless args.kind_of? Array"

Объект в руби это обычная си-структуфра.
Когда мы передаем объект в аргумент функции, передаётся не сам объект, а только указатель на него (сам объект лежит в хипе).

Так что возможно разработчики решили упростить. Что в общем вполне нормально для языка такого типа.

+ не смотря на то, что указать класс явно нельзя - возможности аргументов в руби просто шикарны ( *args/ procs-objects/ blocks )
 

  #100  
Старый 02.06.2010, 02:25
xciss
Новичок
Регистрация: 01.06.2010
Сообщений: 3
Провел на форуме:
6544

Репутация: 0
По умолчанию

Цитата:
Сообщение от XPYMGT  
Что посмотрел я на этот руби выводы: он по ходу более объектно ориентированный чем питон, синтаксис у него избыточный(эти if then endif else endelse). Помню когда-то читал что тормознутый он, насколько слабее питона, никто не скажет? Покажите мне хотя бы одну программу на руби.
1.8 конечно медленный.
1.9 -> в 5 раз быстрее (потому как встроили виртуальную машину)
есть реализация Jruby которая работает вроде бы в 1.5 раза быстрее 1.9
+ есть реализация на C# (IronRuby)
+ есть реализация с использованиями llvm (или какой-то другой вирт машины)

В целом можно сказать что скорость последних версий руби сравнима со скоростью пайтона. (конечно же обычного)

В любом случае, движуха в сторону ускорения руби имеется.


P.S. синтаксис аля перл. можно сказать что избыточен, по началу напрягает то, что можно обходиться без return ->

PHP код:
def is_equal()
  
true if object
end 
с другой стороны писать return xxx if yyy иногда очень удобно.
конечно никто не запрещает писать старое доброе
if yyy
xxx
или даже

if yyy then xxx;

можно даже ставить ';' в конце

+ очень крутые нововведения в нейминге методов, например:
PHP код:
def finded?(object)
  return 
true if Objects.exists?(object)
end

def baaang
!(object) 
и т.д. )

Последний раз редактировалось xciss; 02.06.2010 в 02:30..
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ