-2
在C#語言中存在用於此目的的全局系統變量。Dart如何在`main`方法之外獲得命令行參數?
Environment.CommandLine
此屬性提供對當前進程啓動時在命令行上指定的程序名和任何參數的訪問。
Dart是異步的語言。它允許自啓動進程。
void main() {
task("foo", callback1);
task("baz", callback2);
}
包裝任務。
void task(String name, action()) {
schedule();
addTask(name. action);
}
void schedule() {
// Here we start timer if it not started.
// This timer will get cmd line arguments
// And executes task specified in cmd line arguments
}
P.S.
達特團隊的正式答覆:「沒有計劃」。
我無法理解:「爲什麼在其他平臺上可以通過它們的庫實現這一點,但在Dart平臺中這是不可能的?」。
爲什麼只有通過「主要」參數,甚至不能確保其他隔離不能替代這些參數不是真正的OS進程命令行參數的替代參數)?
下面的例子:
轉到語言
func main() {
fmt.Println(len(os.Args), os.Args)
}
鏽語言
fn main() {
let args = os::args();
println!("The first argument is {}", args[1]);
}
C#語言
class Sample {
public static void Main() {
Console.WriteLine();
String[] arguments = Environment.GetCommandLineArgs();
Console.WriteLine("GetCommandLineArgs: {0}", String.Join(", ", arguments));
}
}
Ruby語言
ARGV.each do|a|
puts "Argument: #{a}"
end
Python語言
import sys
print(sys.argv)
PHP語言
foreach($argv as $value)
{
echo "$value\n";
}
Node.js的語言
process.argv.forEach(function (val, index, array) {
console.log(index + ': ' + val);
});
附:
我再次相信,Dart平臺並不像其他人一樣。
這只是我的看法。它不會改變任何東西。
感謝GünterZöchbauer,感謝您的關注,但不需要對此進行編輯。
將參數傳遞給foo或將args指針和arglen存入某個全局變量。 –
您可能會發現[this](http://stackoverflow.com/questions/9279541/how-do-i-access-argv-command-line-options-in-dart)頁面有趣。它討論了新的Options()參數。 –
@Mohit Jain它也說選項不再可用。 – Fox32