关于不同功能的scilab局部变量

时间:2014-06-19 02:24:34

标签: function scilab

所以我有这样的东西我要求fun3调用fun1。 在fun1中,用户在变量a和b中输入一些文本,然后fun2使用它,但是我如何链接不同函数中的局部变量然后将它们带到fun3来使用它们,我是否必须定义它们在主程序中首先?

我知道我必须在函数中使用输入和输出参数,但我认为我做错了我把它们留空了以便有人帮助我完成它们

功能

function [] = fun1 ()
    a=input("input is text")
    b=input("input is text")
end function

function [] = fun2()
    printf("a is b")
end function

function [] = fun3()
    fun1()
    fun2()
    disp(a)
    disp(b)
end function

主程序

fun3()

1 个答案:

答案 0 :(得分:1)

欢迎来到编程世界/ SciLab。有一些很棒的教程,例如these可以帮助您入门。在the SciLab wiki上找到其他人的列表。

为了解决你的问题,让我们逐个完成每个功能。

FUN1

此功能需要向用户询问两个字符串a和b。我认为你的意思是输入是字符串所以根据the input function docs,我们应该在调用中添加“string”。另请参阅链接上的示例。为了使fun1将这些返回到字符串,我们将它们放在函数的输出参数中。

function [a,b] = fun1()
    a=input("input a is text: ", "string")
    b=input("input b is text: ", "string")
endfunction

FUN2

因为你使用了printf,我假设你想用一些额外的文字打印a和b。您可以在this page底部看到有关使用printf的一些示例。要打印它们,我们需要知道该值,因此请指定a和b作为输入参数。

function [] = fun2(a,b)
    printf("a (%s) is b (%s)", a, b)
endfunction

FUN3

在fun3中,你想要调用获取用户输入的函数fun1,无论它返回什么,你想发送到fun2打印两个。然后,您想再次打印值。

请注意,使用这些函数时,名称不必与局部变量的名称相同。

function [] = fun3()
    [c,d] = fun1()
    fun2(c,d)
    disp(c)
    disp(d)
endfunction

回答你的问题

在主程序中定义变量使它们成为全局变量。如果可以避免这种情况,请始终避免这种情况总是尝试仅使用局部变量并使用正确的输入和输出变量,如上所示。通过这种方式,您可以一目了然地了解功能中流出的每个变量。它使您的功能测试更加容易。如果你知道一个函数通过尝试各种输入和检查输出来工作,你可以忘掉它并使用它。

另见globals are bad。这是关于c,但他提出了一些有效的观点。

最后

我建议先做一些教程,以了解基本的东西。