Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala宏:限制变量名_Scala_Scala Macros - Fatal编程技术网

Scala宏:限制变量名

Scala宏:限制变量名,scala,scala-macros,Scala,Scala Macros,我有一个方法def getCountryAtPosition(lat:Double,lon:Double)=???,由于可能会意外切换参数,该方法显然容易出错。不过,我不想将API更改为更加类型化的API 相反,如果方法的名称可疑,我希望使其无法将变量传递给该方法: val latitude = 10.00D val longitude = 20.00D getCountryAtPosition(longitude, latitude) 我想拒绝此代码,因为传递给lat的变量具有lon后缀,反

我有一个方法
def getCountryAtPosition(lat:Double,lon:Double)=???
,由于可能会意外切换参数,该方法显然容易出错。不过,我不想将API更改为更加类型化的API

相反,如果方法的名称可疑,我希望使其无法将变量传递给该方法:

val latitude = 10.00D
val longitude = 20.00D
getCountryAtPosition(longitude, latitude)

我想拒绝此代码,因为传递给
lat
的变量具有
lon
后缀,反之亦然。是否可以通过scala宏来实现它?

前缀。但这是一个有趣的问题。我想您还需要一种方法来强制调用方使用宏,而不是直接使用函数。这一点很好。是的,单独编译可能会破坏我的想法。你也可以使用命名的Arguments为什么没有更“类型化”的API?它看起来不像是
反腐败层模式的变体吗?
?反腐败层模式没有解决提出的特定问题,因为参数顺序实际上只能通过使纬度在语法上与经度不同来解决。