Самое быстрое сравнение типов?

Вам нужно будет добавить ключ bankAccountState.verifier в команду.

В вашей команде изменения потока инициатора с:

val command = Command(BankAccountContract.Add(), listOf(ourIdentity.owningKey))

на:

val command = Command(BankAccountContract.Add(), listOf(ourIdentity.owningKey,bankAccountState.verifier.owningKey))
6
задан James Petruzzi 18 December 2008 в 17:51
поделиться

4 ответа

 if(body2.Tag is Dog)

на самом деле компилируется как

Dog Temp = body2.Tag as Dog;
if (temp != null)

В Вашем коде Вы затем делаете бросок снова. Лучше был бы:

Dog dog = body2.Tag as Dog;
if (dog != null)
{
    dog.Bark();
}
19
ответ дан 8 December 2019 в 04:10
поделиться

Я просто сделал бы абстрактный метод для объекта Тела под названием, Столкнулся:

abstract class Body
{
   abstract void Collision(Body other);
}

class Dog : Body
{
   public override void Collision(Body other) {
      this.Bark();
   }

   public void Bark() { ... }
}

Затем в Вашей функции коллизии просто называют Коллизию на включенных телах.

public bool OnCollision(Body body1, Body body2)
{
   body2.Collision(body2);
}

Таким образом, любой тип тела может сделать то, в чем это нуждается, когда коллизия происходит, Вы могли даже оптимизировать это для отслеживания, которых тела были уведомлены относительно коллизий друг с другом и сокращают количество вызовов функции, которые необходимо выполнить:

public bool OnCollision(Body body1, Body body2)
{
   // Record that these two objects have been notified of a collision
   // then when these same objects are the only two operands in subsequent calls
   // you can just short circuit the calls.
   if(!AlreadyNotifiedOfCollision(body1, body2))
   {
      body1.Collision(body2);
      body2.Collision(body1);
      NotifiedOfCollision(body1, body2);
   }
}

Конечно, эмпирическое тестирование должно было бы быть сделано для проверки той этой проверки, быстрее, чем на самом деле просто выполнение вызова дважды...

6
ответ дан 8 December 2019 в 04:10
поделиться

Подход хотел бы это быть выполнимым или полезным?

public interface ICollidable
{
    void OnCollision();
}

public abstract class Body : ICollidable
{
    public abstract void OnCollision();
}

public class Dog : Body
{
    public override void OnCollision();
    {
        Bark();
    }
}

public Boolean OnCollision(ICollidable a, ICollidable b)
{
    b.OnCollision();
}
1
ответ дан 8 December 2019 в 04:10
поделиться

How about a generic collision method? Then there is no need for inheritance. Just an interface.

public bool OnCollision<TA,TB>(TA a, TB b)
    where TA : ICollidable
    where TB : ICollidable {
    a.Collision(b);
}
0
ответ дан 8 December 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: