Elixir語言中 Code.eval_string
相關用法介紹如下。
用法:
eval_string(string, binding \\ [], opts \\ [])
@spec eval_string(List.Chars.t(), binding(), Macro.Env.t() | keyword()) ::
{term(), binding()}
評估 string
給出的內容。
binding
參數是變量綁定列表。 opts
參數是環境選項的關鍵字列表。
警告:string
可以是任何 Elixir 代碼,並將以與 Erlang VM 相同的權限執行:這意味著此類代碼可能會危及機器(例如通過執行係統命令)。不要將
與不受信任的輸入(例如來自網絡的字符串)一起使用。eval_string/3
選項
選項可以是:
-
:file
- 評估中要考慮的文件 -
:line
- 腳本開始的行
此外,您還可以將環境作為第二個參數傳遞,因此評估發生在該環境中。但是,如果評估的代碼需要或編譯另一個文件,則賦予此函數的環境將不適用於所述文件。
返回形式為 {value, binding}
的元組,其中 value
是從評估 string
中返回的值。如果在評估 string
時發生錯誤,將引發異常。
binding
是在評估 string
之後包含所有變量綁定的列表。綁定鍵通常是原子,但它們可能是在不同上下文中定義的變量的元組。
例子
iex> {result, binding} = Code.eval_string("a + b", [a: 1, b: 2], file: __ENV__.file, line: __ENV__.line)
iex> result
3
iex> Enum.sort(binding)
[a: 1, b: 2]
iex> {result, binding} = Code.eval_string("c = a + b", [a: 1, b: 2], __ENV__)
iex> result
3
iex> Enum.sort(binding)
[a: 1, b: 2, c: 3]
iex> {result, binding} = Code.eval_string("a = a + b", [a: 1, b: 2])
iex> result
3
iex> Enum.sort(binding)
[a: 3, b: 2]
為方便起見,您可以將
作為__ENV__/0
opts
參數傳遞,並且當前環境中定義的所有導入、要求和別名都將自動繼承:
iex> {result, binding} = Code.eval_string("a + b", [a: 1, b: 2], __ENV__)
iex> result
3
iex> Enum.sort(binding)
[a: 1, b: 2]
相關用法
- Elixir Code.eval_quoted用法及代碼示例
- Elixir Code.ensure_compiled用法及代碼示例
- Elixir Code.ensure_loaded?用法及代碼示例
- Elixir Code.ensure_loaded用法及代碼示例
- Elixir Code.prepend_path用法及代碼示例
- Elixir Code.compiler_options用法及代碼示例
- Elixir Code.quoted_to_algebra用法及代碼示例
- Elixir Code.put_compiler_option用法及代碼示例
- Elixir Code.format_string!用法及代碼示例
- Elixir Code.required_files用法及代碼示例
- Elixir Code.get_compiler_option用法及代碼示例
- Elixir Code.Fragment.cursor_context用法及代碼示例
- Elixir Code.available_compiler_options用法及代碼示例
- Elixir Code.require_file用法及代碼示例
- Elixir Code.Fragment.container_cursor_to_quoted用法及代碼示例
- Elixir Code.Fragment.surround_context用法及代碼示例
- Elixir Code.delete_path用法及代碼示例
- Elixir Code.append_path用法及代碼示例
- Elixir Code.unrequire_files用法及代碼示例
- Elixir Code.fetch_docs用法及代碼示例
- Elixir Code.string_to_quoted_with_comments用法及代碼示例
- Elixir Code用法及代碼示例
- Elixir Config.config_env用法及代碼示例
- Elixir Config.config用法及代碼示例
- Elixir Config.Reader用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Code.eval_string(string, binding \\ [], opts \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。