Нет, вы не можете это знать напрямую.
Вот уродливый обходной путь, основанный на том факте, что параметром по умолчанию может быть вызов метода.Он имеет много предостережений, самое большое из которых заключается в том, что он не является потокобезопасным.
private var usedDefault = false
private def default = {
usedDefault = true
1
}
def myMethod(x: Int = default) = {
if (usedDefault) {
println("default")
} else {
println("supplied")
}
usedDefault = false
}
Еще один более практичный способ это:
def myMethod(): Unit = myMethod(1, usedDefault = true)
def myMethod(x: Int): Unit = myMethod(x, usedDefault = false)
private def myMethod(x: Int, usedDefault: Boolean) = {
if (usedDefault) {
println("default")
} else {
println("supplied")
}
}