Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Abu Antos' ([info]syarzhuk)
@ 2002-04-26 14:03:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Музыка:Clan of Xymox - Clan of Xymox
Entry tags:code

За што я не люблю Perl

Вось такi скрыпцiк:


@a = (one, two, three);
$b = (one, two, three);
($c) = (one, two, three);


Не запускаючы яго, адкажыце, якiя значэньнi ў:

  • @a
  • $b
  • $c
  • $#a


P.S. Адказы й дадатковыя пытаньнi

P.P.S.
Адказы на дадатковыя пытаньнi


(Добавить комментарий)


[info]krolechka@lj
2002-04-26 08:08 (ссылка)
Дaвнo нe зaнимaлся Пeрлoм, нo пoпрoбую:

oнe, тwo, тхрee
3
oнe
сдaюсь :)

(Ответить)

Он какой-то не такой...
[info]rydel23@lj
2002-04-26 08:13 (ссылка)
Шо з табой здарылася? Дзе чырвоная шапка? Дзе вага і салідная маса? Адкуль гэтыя палоскі? Шо за блакітны банцік.

А ну быра ў вугал!

На калені!

І шоб больш губы памадай не мазюкаў!

:))))

(Ответить) (Ветвь дискуссии)

Re: Он какой-то не такой...
[info]syarzhuk@lj
2002-04-26 08:20 (ссылка)
Што за наезды, салага? Зараз тут табе пакажам дзедаўшчыну!!! Гэта AI Герцэн: http://www.livejournal.com/talkread.bml?journal=syarzhuk&itemid=4384
А можаш што сказаць па сутнасьцi справы? Цi ў Accenture такога не праходзяць?

(Ответить) (Уровень выше)

Re: такой!
[info]krolechka@lj
2002-04-26 08:21 (ссылка)
У нeгo жe гoлубыe глaзa! бeлый пушистый живoтик! и бoрoдa (ничeгo, чтo ee нe виднo - мoя дoчкa вeдь нe пустoe мeстo дeргaлa)!
Рaзвe мoжнo с ним тaк грубo? oн вeдь для Любви сoздaн...

(Ответить) (Уровень выше)

я ціпа спужаўся
[info]rydel23@lj
2002-04-26 08:49 (ссылка)
... ладна....
прыгожая цацачка...

а наконт Пэрла адразу скажу, што гэта адна з нешматлікіх вэб-тэхналёгіі (у данным выпадку мова), пра якую я ніхера практычна ня ведаю.

Што тычыць $# - наклькі памятаю, гэта апошні індэкс. Значыць 0, бо а - гэта не сьпіс.

(Ответить) (Ветвь дискуссии)

Re: я ціпа спужаўся
[info]rydel23@lj
2002-04-26 08:50 (ссылка)
Oops, it has three elements, so it's 2 (two).
So am I right?

(Ответить) (Уровень выше)


[info]antanian@lj
2002-04-26 09:22 (ссылка)
ну знак "#" -- гэта камэнтар. А што выйдзе з тваёй задачкі? хв...

(Ответить)

Адказ з тлумачэньнем
[info]syarzhuk@lj
2002-04-26 10:09 (ссылка)
1. @a = (one, two, three);
Тут усё проста. Масыву прызначаецца другi масыў, таму
@a раўняецца (one, two, three)
$#a - гэта iндэкс найвялiкшага элементу масыва @a. У @a тры элементы пад нумарамi 0, 1, 2 таму $#a = 2
2. $b = (one, two, three);
$b - гэта скаляр. Таму тое, што справа ад знака "=" - гэта нiякi не масыў, а нейкае скалярнае выражэньне, узятае ў дужкi. one, two, three вылiчаецца гэтаксама як працуе аператар коскi ў C - рэзультатам ёсьць апошнi элемент сьпiсу. Таму $b = "three"

3. ($c) = (one, two, three);

Зь левага боку стаiць масыў з адным членам - $c. Таму адбываецца копiя элементаў масыва з адпаведнымi iндэксамi. $c становiцца роўным "one", a "two" i "three" пралятаюць, як фанера над Парыжам. Калi-б было:
($c, $d) = (one, two, three)
то $c = "one", $d="two", а three пралятае. Калi-б было:
($c, $d, $e, $f) = (one, two, three)
то $e="three", a $f="".

Extra Credit:
EC1.
$a = one, two, three;
Чаму роўнае $a?

EC2.
EC2a. $b = (one, two, three);
EC2b.
@a = (one, two, three);
$b = @a
Цi прысваяюць кавалкi коду EC2a i EC2b адное й тое-ж значэньне зьменлiвай $b ?

(Ответить) (Ветвь дискуссии)

Re: Адказ з тлумачэньнем
[info]syarzhuk@lj
2002-04-26 10:26 (ссылка)
"прысваяюць", госпадзi. Канешне-ж, прысвойваюць. Шкада, што немагчыма рэдагаваць каментары.

(Ответить) (Уровень выше)

Адказ на Extra Credit
[info]syarzhuk@lj
2002-04-29 04:20 (ссылка)
EC1.
$a = one, two, three;
Чаму роўнае $a?
Мы ўжо ведаем, што калi:
$a = (one, two, three);
то дужкi зусiм не азначаюць масыў, а выконваецца аперацыя "коска". Здаецца, тут павiнна быць тое-ж самае: выканацца "коска" на one, two, three, i $a атрымаць апошняе значэньне - three. Дык не! У гульню ўступаюць прыярытэты апэрацыяў - прысваеньне мае большы прыярытэт i выконваецца перад коскай. Таму EC1 можна запiсаць як:
($a=one), two, three.
Рэзультатам гэтага выразу будзе three, але $a атрымае значэньне one.
Менавiта таму дужкi ў
$a = (one, two, three);
проста неабходныя.

EC2.
EC2a. $b = (one, two, three);
Тут зразумела - аперацыя "коска", $b = "three"

EC2b.
@a = (one, two, three);
$b = @a
Калi скаляру прысвойваем масыў - атрымлiваем памер масыва, дакладней, колькасьць элементаў.
Таму $b = 3
(болей наглядна можна запiсаць як $b = scalar @a. Scalar @list - гэта тое-ж самае, што $#list+1)

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Адказ на Extra Credit
[info]syarzhuk@lj
2002-04-29 12:16 (ссылка)
Паправачка да апошняга радку:
scalar @list
Бо case sensitive

(Ответить) (Уровень выше)

я круты лінгвісты
[info]rydel23@lj
2002-04-26 12:08 (ссылка)
Не прысвойваюць, а прысабечваюць!

(Ответить) (Ветвь дискуссии)

Re: я круты лінгвісты
[info]ex_ilyavinar899@lj
2002-04-26 12:45 (ссылка)
Учите Перл, а не то полицию вызовут! (http://www.stonehenge.com/merlyn/UnixReview/col38.html)

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: я круты лінгвісты
[info]syarzhuk@lj
2002-04-29 04:11 (ссылка)
Дык, тая-ж праблема - a Lots of Insane & Silly Parenthesis чамусьцi кажуць пра Liсп...

(Ответить) (Уровень выше)