Это будет работать, независимо от того, сколько варов, и это общий шаблон:
Or[##]&,
например
In[5]:= Or[##] & @@ {a, b, c}
Out[5]= a || b || c
Однако в случае Or
этого недостаточно, поскольку Or
равно HoldAll
и имеет короткое замыкание, то есть останавливается на первом операторе True
и сохраняет остальную часть без оценки. Пример:
In[6]:= Or[True, Print["*"]]
Out[6]= True
In[7]:= Or[##] & @@ Hold[True, Print["*"]]
During evaluation of In[7]:= *
Out[7]= True
Это будет хорошо, хотя:
Function[Null,Or[##],HoldAll],
например,
In[8]:= Function[Null, Or[##], HoldAll] @@ Hold[True, Print["*"]]
Out[8]= True
и может использоваться в таких случаях (когда вы не хотите, чтобы ваши аргументы оценивались). Обратите внимание, что здесь используется недокументированная форма Function
. Упоминание об этой форме можно найти в книге Р.Медера «Программирование в Mathematica».
НТН