0

Webots(ロボットシミュレーションプログラム)のサンプルコードを理解しようとしています。

私はこのコードに直面しました:

Servo rightShoulderPitch = getServo("RShoulderPitch");
rightShoulderPitch.setPosition(1.5);

一行目で肉とは何かわかりません。「rightShoulderPitch」は Servo クラスのオブジェクトのように見えますが、通常どおり作成されず、「getServo」(メソッドだと思います) がここに来ます。

このクラスのヘッダーは、役立つ場合は次のとおりです。

public class FieldPlayer extends Robot {

リファレンスマニュアルにも会社の説明がありますが、意味がわかりませんでした。ここでgetservoを検索して見つけることができます。

--- RShoulderPitch: ロボットの肩の名前です

大変助かります。

ありがとう

4

2 に答える 2

6

この行:

Servo rightShoulderPitch = getServo("RShoulderPitch");

...getServoメソッドを呼び出し、文字列値 "RShoulderPitch" を渡します。rightShoulderPitch戻り値は、型の変数の初期値として使用されますServo。(これはオブジェクトでrightShoulderPitch はないことに注意してください。これは変数です。null またはオブジェクトへの参照のいずれかになる値があります。)

の戻り値の型が何であるかはわかりませんgetServoが、暗黙的に変換できるものでなければなりませんServo-Servoつまり、それ自体または何らかのサブクラスのいずれかです。

getServoできる:

  • 新しいオブジェクトを作成し、それへの参照を返します
  • 既存のオブジェクトへの参照を返します (例: キャッシュから)
  • null を返す
  • 例外をスローする

それでも役に立たない場合は、理解できないことを正確に明確にしてください。Java を初めて使用するように思われる場合は、Webots API を使用せずに「Java のみ」を学習するのがおそらく良い方法です。言語自体に自信がある場合にのみ、Webots を学習してください。

于 2012-05-05T11:59:27.750 に答える
3

ジョンの優れた答えを補足するために、もっと一般的な言葉で説明しようと思います。

サンドイッチが必要な場合、2つの解決策があります。

  • サンドイッチは自分で用意してください。これはコードと同等ですSandwich s = new Sandwich()
  • スナックバーに行き、サンドイッチを頼みます。これは、コードと同等ですSandwich s = snackBar.getSandwich("Ham & Cheese")

getSandwich()後者の場合、これは、必要なサンドイッチの名前( "Ham&Cheese")を使用してサンドイッチを準備し、それを返す、snackBarオブジェクトのメソッドです。したがって、このメソッドはおそらく内部的にnewを呼び出しますSandwich()。ただし、別のオブジェクトに委任して呼び出すこともできます。たとえば、次のようになりますcook.prepareSandwich("Ham & Cheese")。この場合、を呼び出すのはクックオブジェクトnew Sandwich()です。または、snackBarオブジェクトは、事前に準備されてキャッシュに保存されているサンドイッチを取得することもできますfridge.getSandwich("Ham & Cheese")

于 2012-05-05T12:06:44.197 に答える