Немерл, объеденить два case в match
От: chudo19  
Дата: 19.09.06 10:26
Оценка:
Есть две опции

| SomeVariantA => Foo()
| SomeVariantB => Foo()
...
или для листов

|[] => Foo()
|[a] => Foo()
....

не хочется дублировать строчки. как по красивше записать?

30.01.07 18:16: Перенесено модератором из 'Декларативное программирование' — IT
Re: Немерл, объеденить два case в match
От: ie Россия http://ziez.blogspot.com/
Дата: 19.09.06 11:09
Оценка: +1
Здравствуйте, chudo19, Вы писали:

C>Есть две опции


C>| SomeVariantA // => Foo()

C>| SomeVariantB => Foo()
C>...
C>или для листов

C>|[]// => Foo()

C>|[a] => Foo()
C>....

C>не хочется дублировать строчки. как по красивше записать?

см. выделенное
... << RSDN@Home 1.2.0 alpha rev. 0>>
Превратим окружающую нас среду в воскресенье.
Re[2]: Немерл, объеденить два case в match
От: chudo19  
Дата: 19.09.06 11:26
Оценка:
Здравствуйте, ie, Вы писали:

ie>см. выделенное

спасибо.

однако теперь он не дает доступ к переменным
в чем конечно есть логика.
|[a]
|b::_ => a and b not visible
Re[3]: Немерл, объеденить два case в match
От: ie Россия http://ziez.blogspot.com/
Дата: 19.09.06 11:42
Оценка: +2
Здравствуйте, chudo19, Вы писали:

C>однако теперь он не дает доступ к переменным

C>в чем конечно есть логика.
C>|[a]
C>|b::_ => a and b not visible

Дык, а как ты хотел. Матч то идет по одной ветке, т.о. переменные в другой не будут иметь смысла. Так, пожалуйста:
  | [x]
  | x :: _ => WriteLine($"$x")
... << RSDN@Home 1.2.0 alpha rev. 0>>
Превратим окружающую нас среду в воскресенье.
Re[4]: Немерл, объеденить два case в match
От: IT Россия linq2db.com
Дата: 19.09.06 12:06
Оценка:
Здравствуйте, ie, Вы писали:

C>>однако теперь он не дает доступ к переменным

C>>в чем конечно есть логика.
C>>|[a]
C>>|b::_ => a and b not visible

ie>Дык, а как ты хотел. Матч то идет по одной ветке, т.о. переменные в другой не будут иметь смысла. Так, пожалуйста:

ie>
ie>  | [x]
ie>  | x :: _ => WriteLine($"$x")
ie>


или ещё как вариант:

| [a]    with b = 1
| b :: _ with a = 2 => WriteLine($"$a:$b")
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.