У вас может быть перегрузка метода .NET, которая также принимает один аргумент типа System.Tuple
, что усложняет ситуацию.
В общем случае F # просматривает сайт вызова метода и синтаксически определяеткоторый перегружает, чтобы попробовать.При вызове o.M aTupleVar
F # пытается найти метод, принимающий один аргумент (который является кортежем), в отличие от нескольких аргументов.
Обходной путь "piping", предложенный Дэниелом, работает, потому что нет синтаксического вызова метода, поэтому F # просто разрешает rng.Next
в группу методов перегрузки с этим именем и разрешает вызов позже.
Тем не менее, на практике почти никогда нет причин для этого.Если вы собираетесь вызывать метод .NET, делайте это напрямую с помощью o.M(arg1,arg2)
, редко возникает необходимость / желание сначала создать кортеж.