Sml 如何在不返回值的情况下退出函数
假设我有一个函数,它在满足给定条件时返回某个值,在不满足条件时不返回任何值 e、 g fun-foo(n)=如果n<100000,那么n-else(类似于退出函数。我们在其他编程语言中有它。这里有类似的东西吗?) 我最初想写()但它说if或其他两种情况不匹配Sml 如何在不返回值的情况下退出函数,sml,smlnj,Sml,Smlnj,假设我有一个函数,它在满足给定条件时返回某个值,在不满足条件时不返回任何值 e、 g fun-foo(n)=如果n
变得更加明确,我想写一个函数,如果它是有效的整数,则接受一个数字、任意数字并合并到一个列表中,如果它不是整数,则忽略它。在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