比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

EddyScriptは、Pythonに似た構文を持つプログラミング言語です。

これは、Eddyの様々な部分で使用されます。

この言語で書かれたものは、すべて固有のに似た構文を持つプログラミング言語です。これは、Eddyの様々な部分で使用されます。この言語で書かれたものは、すべて固有のGPUコードにコンパイルされ、ハードウェア上で実行されます。

...

Pythonと多数の類似点がありますが、Pythonとはまったく異なります。とはまったく異なります。型がどのように扱われるか、また、関数をどのように宣言する必要があるかを理解することは重要です。

型がどのように扱われるか、また、関数をどのように宣言する必要があるかを理解することは重要です。

以下は、EddyScriptではまだ同等の機能がないPython関数のリストです。

  • import statements
  • tuples
  • user defined classes/objects
  • strings
  • dictionaries
  • generators
  • context managers
  • nested functions
  • exceptions
  • list comprehensions
  • function *args and **kwargs
  • function named arguments
  • function optional arguments

この言語はまだ発展中で、今後のバージョンでは、おそらくこれらの関数のいくつかに対応するようになるでしょう。

...

アンカー
types
types
アンカー
basic-types
basic-types

基本型

説明

Int, int

32ビットの符号付き整数。

Int8, int8

8ビットの符号付き整数。

Int16, int16

16ビットの符号付き整数。

Int64, int64

64ビットの符号付き整数。

Float, float

単精度浮動小数。

Bool, bool

True/Falseを表すブール型。

None

無効。デフォルトの関数の戻り型。

アンカー
vector-types
vector-types

ベクトル型

説明

Int2

2つのInt型の配列。

Int3

3つのInt型の配列。

Int4

4つのInt型の配列。

Float2

2つのFloat型の配列。

Float3

3つのFloat型の配列。

Float4

4つのFloat型の配列。

これらの型は、この例のように通常のリストとして扱うことができます。

コード ブロック
def example(foo=Float3, bar=Float2):

...


    return foo[0] + bar[1]

以下は、整数のリストを、これらの型の1つを受け取る関数へどのように渡すかを示した例です。

コード ブロック
def add_float3(a=Int3, b=Int3):

...


    return a+b

...



def example():

...


    return add_float3([1,1,1], [1,1,1])


情報
titleご注意
リストが対応するベクトル型と一致しない場合、コンパイルエラーが発生します。

アンカー
matrix-types
matrix-types

マトリックス型

説明

Float3x3

3つのFloat3型の配列。

Float3x4

3つのFloat4型の配列。

Float4x4

4つのFloat4型の配列。

...

アンカー
functions
functions
アンカー
defining-functions
defining-functions

関数

関数の定義

  • 引数を必要とせず、戻り値のない関数は、このように定義されます。
コード ブロック
def useless_function():

...


    pass
  • 現在、すべてのコードは関数内で書く必要があります。関数の定義から外れたグローバルスコープでは何も許可されません。
コード ブロック
foo = 5 # ERROR, this is in global scope

...



def example():

...


    bar = 5 # OK

アンカー
return-type-rules
return-type-rules

戻り型のルール

  • 関数にreturn文が含まれていない場合、コンパイラは自動的に戻り型をNoneと見なします。関数にreturn文が含まれていない場合、コンパイラは自動的に戻り型をNoneと見なします。
コード ブロック
def example_no_return_specified():

...


    pass # No return specified, compiler will assume 'return None'

...



def example_return_specified():

...


    return None
  • 複数のreturn文がある関数は、そのすべてが確実に同じ型を返すようにしなければなりません。
コード ブロック
def multiple_return_example_BAD():

...


    a =

...

 5
    if a < 5:
        return 1.0

    return [1.0, 2.0] # BAD, this does not match the type returned above which is a Float.

...



def multiple_return_example_GOOD():

...


    a = 5
    if a < 5:
        return 1.0

    return 0.0 # OK, both returns in this function are of the type Float
  • None以外のreturn文があり、それが条件ブロック内にある場合は、必ず最後のreturn文も指定してください。
コード ブロック
# This will not compile
def single_return_example_BAD():

...


    a =

...

 5
    if a < 5:
        return 1.0 # Function return is determined to be

...

 Float

    # The compiler automatically adds 'return None'
    # return None # BAD, 'None' is incompatible with 'Float'

# This is OK
def single_return_example_BAD():

...


    a = 5
    if a < 5:
        return None

    # The compiler automatically adds 'return None'
    # return None # OK, since the return earlier is also of type 'None'

アンカー
function-arguments
function-arguments

関数の引数

  • すべての関数の引数は、型の割り当てや、型を得ることができる元のリテラルを必要とします。Pythonで引数をオプションとしてマークするのと同様の方法で、型を指定します。
コード ブロック
# Function accepts two float arguments

...


def add_fn(a=Float, b=Float):

...


    return a + b

...



# Function accepts one float argument and one integer argument

...


def add_fn(a=1.0, b=10):

...

    # Using literals to define the

...

 types
    return a + b

# Function accepts one float argument and one integer argument
def add_fn(a=Float, b=Int): # This is identical to the function defined above.

...


    return a + b

アンカー
calling-functions
calling-functions

関数の呼び出し

  • 名前付き引数およびオプションの引数には対応していません。常に、それらが定義されている順序ですべての引数を関数に与える必要があります。
コード ブロック
def add_fn(a=1.0, b=1.0):

...


    return a + b

...



def bad_example():

...


    return add_fn() # ERROR, you must provide add_fn with two arguments

...



def bad_example2():

...


    return add_fn(5.0, b=10.0) # ERROR, named arguments are not supported

...



def good_example():

...


    return add_fn(5.0, 10.0) # OK