2013-11-11 8 views
1

Я пытался этот язык, и у меня есть вопрос с этим кодом:Как работает «параллельная» в структуре управления в J?

cocurrent'local1' 
text1=: 'CCC' 
cocurrent'local2' 
text1=: 'AAA' 

f0=: 3 : 0 
    select. y 
    case. 1 do. text1 
    case. 2 do. cocurrent'local1', 'change' 
    end. 
) 

f0 &.> 1 2 1 
┌───┬┬───┐ 
│AAA││AAA│ 
└───┴┴───┘ 

Как вы можете видеть, «изменение» слово никогда не придумал, но я называю f0 с 2, так что изменения не произошло.

Что здесь происходит?

+0

@marc_s Название функции действительно «сопутствующее». «co» не подходит для «объекта класса». – MPelletier

ответ

4

В случае 2 вы устанавливаете свой язык в 'local1change', потому что 'local1', 'change' объединяет строки до 'local1change'.

Кроме того, ваш последний cocurrent перед тем f0 является local2, что означает f0находится внутриlocal2. Вы никогда не уезжаете local2. Я не уверен, почему ваш последний «AAA» имеет место, но знайте, что вы должны установить свой текущий язык с помощью cocurrent 'base' (или там, где вы начали объявлять эти локали) до объявления f0.

+1

Коканические изменения локальны, поэтому последний «AAA» - это второй «f0 1». – Eelvex

+0

@Eelvex так, чтобы функция выполнялась из локали, и любое изменение языкового стандарта ограничивается только объемом 'f0'? Я не знал. Это объясняет многое (не только потому, что я стараюсь избегать «одновременных»). – MPelletier

+1

Лаборатория «Локали», за которой следует лаборатория «Объектно-ориентированное программирование», дает вам действительно хорошее представление о том, как работают функции «co» и почему. Эти лаборатории находятся в меню Studio в неконфигурных средах J (любая версия с интерфейсом меню). Локали являются мощными, но для их эффективного использования требуются некоторые исследования. – bob