Sml 如何在不返回值的情况下退出函数

Sml 如何在不返回值的情况下退出函数,sml,smlnj,Sml,Smlnj,假设我有一个函数,它在满足给定条件时返回某个值,在不满足条件时不返回任何值 e、 g fun-foo(n)=如果n

假设我有一个函数,它在满足给定条件时返回某个值,在不满足条件时不返回任何值

e、 g

fun-foo(n)=如果n<100000,那么n-else(类似于退出函数。我们在其他编程语言中有它。这里有类似的东西吗?)

我最初想写()但它说if或其他两种情况不匹配


变得更加明确,我想写一个函数,如果它是有效的整数,则接受一个数字、任意数字并合并到一个列表中,如果它不是整数,则忽略它。

在SML中,函数始终必须返回一个值。表示可能有或可能没有有用结果的函数的一种方法是使用
选项
类型。使用
选项
您的函数将返回
某些值
,如果它有有用的返回内容,或者如果它没有,则返回
NONE

对于您的特定用例,另一种选择是将列表作为第二个参数,然后返回列表前面的结果或列表不变


事实上,我不知道有哪种语言允许非void函数不返回值(不调用未定义的行为)。在某些语言中,您可以返回
null
来代替正确的返回值,但在大多数语言中,返回类型为
int
的函数不允许返回该值。无论哪种方式,SML都没有空值。

在SML中,函数始终必须返回一个值。表示可能有或可能没有有用结果的函数的一种方法是使用
选项
类型。使用
选项
您的函数将返回
某些值
,如果它有有用的返回内容,或者如果它没有,则返回
NONE

fun foo n = if n < 1000000 then SOME n else NONE
对于您的特定用例,另一种选择是将列表作为第二个参数,然后返回列表前面的结果或列表不变

事实上,我不知道有哪种语言允许非void函数不返回值(不调用未定义的行为)。在某些语言中,您可以返回
null
来代替正确的返回值,但在大多数语言中,返回类型为
int
的函数不允许返回该值。无论哪种方式,SML都没有空值。

fun foo n=如果n<1000000,则其他一些n没有
fun foo n = if n < 1000000 then SOME n else NONE
请注意,不能将foon直接用作整数,但必须使用isSome和valOf或模式匹配才能知道在哪种情况下是整数

可能最好将列表作为参数传递,并将值附加到列表中

fun foo (n: int, xs: int list) =
   if n < 1000000 then n :: xs else xs
fun-foo(n:int,xs:int列表)=
如果n<1000000,则n::xs else xs
fun foo n=如果n<1000000,则一些n其他n没有
请注意,不能将foon直接用作整数,但必须使用isSome和valOf或模式匹配才能知道在哪种情况下是整数

可能最好将列表作为参数传递,并将值附加到列表中

fun foo (n: int, xs: int list) =
   if n < 1000000 then n :: xs else xs
fun-foo(n:int,xs:int列表)=
如果n<1000000,则n::xs else xs