Предполагая, что ваше scala решение, которое вы написали в комментарии, имеет следующее:
def validIPAddress(IP: String): String = {
if (pattenIPv4.matcher(IP).matches()) "IPv4"
if (pattenIPv6.matcher(IP).matches()) "IPv6"
else "Neither"
}
Первая строка if
будет оценена, но не вернется без ключевого слова return
, поэтому провалится через следующий условный. Это можно исправить двумя способами, одним из них является добавление return
:
if (pattenIPv4.matcher(IP).matches()) return "IPv4"
или, возможно, лучше добавить else
во вторую строку, чтобы вы могли избежать return
как целое, будет оцениваться как одно выражение:
def validIPAddress(IP: String): String = {
if (pattenIPv4.matcher(IP).matches()) "IPv4"
else if (pattenIPv6.matcher(IP).matches()) "IPv6"
else "Neither"
}
Также, как примечание, все эти var
s могут быть val
s, так как вы не изменяете их, и в scala рекомендуется иметь гарантию, что они всегда будут иметь одинаковое значение.