はじめに
この記事では Verse の基本文法について忘れないうちにひたすらメモしていきます。
演算子
比較演算子
記号 | 意味 |
---|---|
< | 小なり |
<= | 以下 |
> | 大なり |
>= | 以上 |
<> | 不等号(他言語の「!=」) |
= | 等号(他言語の「==」) |
論理演算子
記号 | 意味 |
---|---|
and | 左辺と右辺が true(他言語の「&&」) |
or | 左辺もしくは右辺が true(他言語の「||」) |
not | true と false を逆転させる(他言語の「!」) |
代入演算子
#変数を宣言するときに var と付けていた変数に対しては使える
set {変数名} = {値}
#オプション型の変数から値を取得するときは失敗コンテキストの中で「?」を付けて取得する
if({値の設定先の変数名}:{型名} = {オプション型の変数名}?):
条件分岐
if-else
# logic 型の値で条件分岐させたいときは「if({logic 型の変数名}?):」と記述する
if ({条件}):
# true の場合の処理
else:
# false の場合の処理
宣言・初期化・定義
クラス
{クラス名} := class({親クラス名}):
変数
変数は宣言するときに var を付けると書き込み可能になって、var を付けないと読み取り専用になり、初期化したときに設定した値から変更できなくなります。
#値型
{変数名}:{型名} = {初期値}
#クラス型
{変数名}:{型名} = {型名}{}
#型推論
{変数名} := {初期値}
# null 許容型(オプション型)
{変数名}:?{型名} = false #値を持たない
{変数名}:?{型名} = option{{初期値}} #初期値を設定するときは option{} を使用する
#辞書型(マップ型)
{変数名}:{Key の型名}]{Value の型名} = map{}
#配列
{変数名}:[]{型名} = array{{初期値1}, {初期値2}}
関数
#通常
{関数名}({引数名}:{引数の型名}):{戻り値の型名} =
#オーバーライド(上書き)
{関数名}<override>({引数名}:{引数の型名}):{戻り値の型名} =
#非同期関数(Sleep() などを使うときに有効)
{関数名}({引数名}:{引数の型名})<suspends>:{戻り値の型名} =
型変換
agent → fort_character
Hoge(Agent:?agent):void =
if(PlayerAgent := Agent?): #オプション型の変数を扱うときには必須の記述
if(FortChatacter := Agent.GetFortCharacter[]): #「using { /Fortnite.com/Characters }」が必須
# FortChatacter 変数を用いた処理
string → message
# message 型を使用するときは <localizes> が必須
StringToMessage<localizes>(StringValue:string):message = "{StringValue}"
→ string
ToString({変換前の値})
オブジェクト→オブジェクト
{変換後の型名}[{変換前の値}]
int → float
{int 型の値} * 1.0
指定子
アクセス指定子(private/public/protected)
#クラス
{クラス名}<{アクセス指定子}> := class({親クラス名}):
#変数
{変数名}<{アクセス指定子}>:{型名} = {初期値}
#関数
{関数名}<{アクセス指定子}>({引数名}:{引数の型名}):{戻り値の型名} =
キーワード
自身のインスタンスの取得
#「Self.{メンバ名}」という書き方でも自身のクラスのメンバにアクセスできる
Self
コンテナ
要素数の取得
{コンテナの値}.Length
要素の追加
#失敗コンテキストの中に記述する
set {コンテナ名}[ Key または要素番号] = {追加する値}
繰り返し文
for
# foreach(配列)
for([変数名]:[配列の値]):
# foreach(マップ)
for({Key の変数名} -> {Value の変数名}:{マップの値}):
その他
コメント
#コメント
<#
コメント
コメント
#>
属性
@{属性名}
ライブラリのインポート
using { /{ドメイン名}/{フォルダ名またはライブラリ名} }
非同期関数の呼び出し
spawn:
{非同期関数名}()
デリゲートへの関数の登録
#登録する関数の引数はデリゲートのそれと一致させる必要がある
{変数名}.{デリゲート名}.Subscribe({登録する関数名})