問題タブ [arrayaccess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP ArrayAccess セットの多次元
編集:テキストの量が威圧的かもしれないことに気付きました. この質問の本質:
多次元値の設定を可能にする方法で ArrayAccess を実装する方法は?
これについてはすでにここで説明されていることは承知していますが、ArrayAccess インターフェイスを正しく実装できないようです。
基本的に、配列と実装されたアプリ構成を処理するクラスがありますArrayAccess
。ネストされたキー ( ) からの値でも、値の取得は正常に機能します$port = $config['app']['port'];
。ただし、値の設定は 1 次元配列に対してのみ機能します。値 (前の例のポートなど) を設定 (解除) しようとするとすぐに、次のエラー メッセージが表示されます。
現在、一般的な意見は、offsetGet()
メソッドが参照によって返さなければならないということです ( &offsetGet()
)。ただし、それでは問題は解決しません。残念ながら、そのメソッドを正しく実装する方法がわかりません。値を設定するために getter メソッドが使用されるのはなぜですか? ここのphpドキュメントもあまり役に立ちません。
これを直接複製するには (PHP 5.4-5.6)、以下に添付されているサンプル コードを見つけてください。
EDIT 2: Ryan が指摘したように、解決策は、代わりに ArrayObject を使用することでした (これは既にArrayAccess
、Countable
および を実装していますIteratorAggregate
)。
配列を保持するクラスに適用するには、次のように構成します。
これは、MIT ライセンスの下でGithublibconfig
で利用できる構成ライブラリに使用しました。
php - 配列メモリ管理 / SplFixedArray 反復 / foreach 配列コピー
私が知っているように、 foreach構築は配列自体ではなく、配列のコピーに対して機能します。
次の構成を使用して、配列のコピーを回避できます。
問題は、固定配列を次のように作成するときです。
それをforeach構築で繰り返します-配列のコピーを作成しますか?それを避けるために「while/each」メソッドに固執する必要がありますか?
c++ - C ++で配列に整数を追加しますか?
検討:
これは MIT 6.096 の任意の数の整数を追加するための単純な再帰関数であり、機能します。
私が理解できないのは最後の行です:
numbers+1
与えられnumbers[]
た配列はどのように機能し、定数int
に整数を追加することはできませんか?int[]
c++ - C++ 11 以降では、std::string::operator[] は境界チェックを行いますか?
std::string::operator[]
境界チェックを行わないものを何度も見てきました。string ::at と string::operator[] の違いは何ですか? operator[]
、2013年に尋ねられた、答えはそれが境界チェックをしないと言います。
これに関する私の問題は、[string.access]の標準 (この場合はドラフト N3797 ) を見る場合です。
- 必要:
pos <= size()
.- 戻り値:
*(begin() + pos)
の場合pos < size()
。charT
それ以外の場合は、 value を持つ型のオブジェクトへの参照を返しますcharT()
。オブジェクトを変更すると、未定義の動作が発生します。- スロー:なし。
- 複雑さ:一定時間。
これによりoperator[]
、 string または default の要素を返す必要があるかどうかを判断するために、何らかの境界チェックを行う必要があると思いますcharT
。この仮定は正しく、operator[]
境界チェックを行う必要がありますか?
assembly - MIPS による配列のインデックス付け
MIPS での配列のインデックス付けに少し問題があります。次のCコードがあるとしましょう:
フレームポインターからの「a」オフセットがたとえば12であることを知っているとしましょう。
「a」のベースアドレスを教えてくれます。ここで、配列アクセス インデックス値 (この場合は 1) が $t1 に格納されているとします。しかし、私はそれが何であるかわかりません。[1] に 7 を格納するにはどうすればよいですか? 私は次のようなものを探しています:
問題は、最後の操作が不正であることです ( MIPS アセンブリを使用した整数配列のインデックス付けにもかかわらず)。これどうやってするの?ありがとうございました
php - インデックスによるオブジェクト要素へのアクセス
私は返すeBay APIを使用しています:
...そして、次のようにアクセスしようとすると:
...次のエラーが表示されます。
Notice: 未定義のプロパティ: DTS\eBaySDK\Types\RepeatableType::$0 in ...
php - ArrayAccess パフォーマンス php
私は現在、ArrayAccess インターフェイスで簡素化するのに最適な候補のように思われる php プロジェクトのコンテナーに取り組んでいます。
これは素晴らしいことだと思いますが、インターフェイスを実装することの唯一の欠点はパフォーマンスかもしれません。
メソッドが offsetGet または offsetSet メソッドから呼び出されている場合、パフォーマンスに大きな影響はありますか? ArrayAccess を使用することの他の欠点はありますか?
乾杯。
generics - インライン関数のパラメーターにメンバー制約を追加すると、配列アクセサーで FS0752 が発生する
型制約に関する Microsoftの公式ドキュメントを何度も読みましたが、このコードがコンパイルされない理由がわかりません。
エラー FS0752: 演算子 'expr.[idx]' は、このプログラム ポイントより前の情報に基づく不定型のオブジェクトで使用されています。さらにタイプ制約を追加することを検討してください
そして:
エラー FS0072: このプログラム ポイントより前の情報に基づいて、不確定な型のオブジェクトを検索します。オブジェクトの型を制約するために、このプログラム ポイントの前に型注釈が必要になる場合があります。これにより、ルックアップを解決できる場合があります。
明らかに、f# のジェネリックでメンバー制約を使用する方法がわかりませんでした。float[]
私が直面している一般的な問題は、 standard のような「ベクトルのような」型、またはDiffSharpパッケージから、またはそれVector<float>
からMathNet.Numerics
でも汎用関数を作成したいということです 。現在、 (full code) のように、各タイプのアドホック関数を取得する必要があります。DV
ご覧のとおり、この関数はまったく同じことを行いますが、異なる型で動作します。
(動作しないコード) のような一般的な関数を取得したい:
私は何が欠けていますか?
編集:私は半分働いていますMathnet.Numerics
'a
それは(警告 FS0064
)を強制するためfloat
、私は望んでいません...(DV
fromDiffSharp
戻り値D
タイプ on get_Item
、ではありませんfloat
。)
宣言を次のように置き換えます
コンパイラを鳴らします:
エラー FS0001: コンパイル時に型パラメーターを解決できないため、宣言された型パラメーター 'a' はここでは使用できません