public string solution(string s)
{
string answer = "";
foreach(var item in s.ToCharArray().OrderByDescending(x=>x))
{
Console.WriteLine(item);
}
return answer;
}
Action음 매개 변수와 반환 값이 없는 메서드를 나타내는 대리자 유형이다. 런타임중에 구독하고 발동할 수 있는 이벤트를 만드는 데 사용된다. event키워드는 Aciton 을 그 클래스 내부에서만 사용하겠다고 하는것이다.
public class TopDownPlayerController : MonoBehaviour
{
public event Action<Vector2> OnMoveEvent;
public void CallMoveEvent(Vector2 direction)
{
OnMoveEvent?.Invoke(direction); //(0)
}
}
OnMoveEvent Action을 만들어준다.
{
// 유니티의 새로운 인풋시스템.
public void OnMove(InputValue value) //move에 해당하는 이벤트 발생시
{
Vector2 moveInput = value.Get<Vector2>().normalized;
CallMoveEvent(moveInput); //해당 백터2값을 CallMoveEvent
}
}
public class TopDownMovement : MonoBehaviour
{
private TopDownPlayerController _controller;
private Vector2 _movementDirection = Vector2.zero;
private Rigidbody2D _rigidBody;
private void Awake()
{
_controller = GetComponent<TopDownPlayerController>();
_rigidBody = GetComponent<Rigidbody2D>();
}
private void Start()
{
_controller.OnMoveEvent += Move; //(1)이벤트 구독
}
private void FixedUpdate()
{
ApplyMovement(_movementDirection);
}
private void ApplyMovement(Vector2 dir)
{
dir = dir * 5;
_rigidBody.velocity = dir;
}
private void Move(Vector2 dir)
{
_movementDirection = dir;
}
}