こんにちは、にいるです。
今回は、Apexの予約キーワードについて、紹介したいと思います。
ふと、開発していて変数に「now」を使っていたんですが、コンパイルが通ったので、記事にしておきたいなと!
・【ヘルプ】Apexの基本概念について
・【ヘルプ】予約キーワード
1.予約キーワードとは
予約キーワードとは、Salesforceがシステム上でユーザが任意に使用できないように設定しているキーワードです。
開発でしか予約キーワードという言葉は見たことないです。
例えば、変数宣言をするときに、変数名は自由に定義できますよね。
1 2 3 |
String str; Boolean flg; List<Contact> conList = new List<Contact>(); |
ただ、なんでもかんでも自由にしてしまうと、書いたApexコードが想定外の動きをすることになるかもしれません。
1 2 3 |
String new; Boolean if; List<Contact> insert = new List<Contact>(); |
上記の場合、newはnew時に使用しますし、ifはif文で使いますし、insertもDMLで使用します。
これらが正しく動作するようにキーワードが被ることを事前に防ぐため、Salesforceではキーワードを予め、変数や定数には使用できないようにしています。
それを予約キーワードと呼んでいます。
2.予約語の変数宣言
では、実際に予約語の変数宣言をしてみましょう。
どれもコンパイルが通っていないですね。
このようにApexを動かすプログラムで制御が掛けられているので、変数宣言はできません。
3.予約キーワード一覧
現時点の予約キーワードです。
2020年6月時点では、132個あるようですね。(下のテーブル作成するの大変でした笑)
# | 予約キーワード | # | 予約キーワード | # | 予約キーワード |
1 | abstract | 45 | activate | 89 | and |
2 | any | 46 | array | 90 | as |
3 | asc | 47 | autonomous | 91 | begin |
4 | bigdecimal | 48 | blob | 92 | break |
5 | bulk | 49 | by | 93 | byte |
6 | case | 50 | cast | 94 | catch |
7 | char | 51 | class | 95 | collect |
8 | commit | 52 | const | 96 | continue |
9 | convertcurrency | 53 | decimal | 97 | default |
10 | delete | 54 | desc | 98 | do |
11 | else | 55 | end | 99 | enum |
12 | exit | 56 | export | 100 | exception |
13 | extends | 57 | FALSE | 101 | final |
14 | finally | 58 | float | 102 | for |
15 | from | 59 | future | 103 | global |
16 | goto | 60 | group | 104 | having |
17 | hint | 61 | if | 105 | implements |
18 | import | 62 | in | 106 | inner |
19 | insert | 63 | instanceof | 107 | interface |
20 | into | 64 | int | 108 | join |
21 | last_90_days | 65 | last_month | 109 | last_n_days |
22 | last_week | 66 | like | 110 | limit |
23 | list | 67 | Long | 111 | loop |
24 | map | 68 | merge | 112 | new |
25 | next_90_days | 69 | next_month | 113 | next_n_days |
26 | next_week | 70 | not | 114 | null |
27 | nulls | 71 | number | 115 | object |
28 | of | 72 | on | 116 | or |
29 | outer | 73 | override | 117 | package |
30 | parallel | 74 | pragma | 118 | private |
31 | protected | 75 | public | 119 | retrieve |
32 | return | 76 | returning | 120 | rollback |
33 | savepoint | 77 | search | 121 | select |
34 | set | 78 | short | 122 | sort |
35 | stat | 79 | static | 123 | super |
36 | switch | 80 | synchronized | 124 | system |
37 | testmethod | 81 | then | 125 | this |
38 | this_month | 82 | this_week | 126 | throw |
39 | today | 83 | tolabel | 127 | tomorrow |
40 | transaction | 84 | trigger | 128 | TRUE |
41 | try | 85 | type | 129 | undelete |
42 | update | 86 | upsert | 130 | using |
43 | virtual | 87 | webservice | 131 | when |
44 | where | 88 | while | 132 | yesterday |
4.まとめ
いかがでしたでしょうか。
Salesforceでは決められた予約キーワードを変数や定数に使用することはできません。
知っていれば問題ないですが、もしコンパイルが正常に通らない場合は予約キーワードの使用を疑ってみるのもありかもしれません。
ただし、その前に予約キーワードに近いキーワードの使用を避けた方が無難かもしれませんね。
皆さんもぜひ色々と試してみてください。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。
ではでは!