0
PowerShell 5.0 클래스를 사용한 실험에서 Rosetta Code의 Stable Marriage 문제에 대한 JavaScript 코드를 변환하려고했습니다. 그것은 매우 직설적으로 보였지만 두 번째 방법 (순위)은 오류를 반환합니다. 모든 코드 경로가 메서드 내에서 값을 반환하지는 않습니다. $this.Candidates.Count
이 0
경우에는 반환이 실행되지 않기 때문에PowerShell 5.0 클래스 메서드 반환 "메서드 내에서 모든 코드 경로가 값을 반환하지는 않습니다"
class Person
{
# --------------------------------------------------------------- Properties
hidden [int]$CandidateIndex = 0
[string]$Name
[person]$Fiance = $null
[person[]]$Candidates = @()
# ------------------------------------------------------------- Constructors
Person ([string]$Name)
{
$this.Name = $Name
}
# ------------------------------------------------------------------ Methods
static [void] AddCandidates ([person[]]$Candidates)
{
[Person]::Candidates = $Candidates
}
[int] Rank ([person]$Person)
{
for ($i = 0; $i -lt $this.Candidates.Count; $i++)
{
if ($this.Candidates[$i] -eq $Person)
{
return $i
}
return $this.Candidates.Count + 1
}
}
[bool] Prefers ([person]$Person)
{
return $this.Rank($Person) -lt $this.Rank($this.Fiance)
}
[person] NextCandidate()
{
if ($this.CandidateIndex -ge $this.Candidates.Count)
{
return $null
}
return $this.Candidates[$this.CandidateIndex++]
}
[int] EngageTo ([person]$Person)
{
if ($Person.Fiance)
{
$Person.Fiance.Fiance = $null
}
return $this.Fiance = $Person
}
[void] SwapWith ([person]$Person)
{
Write-Host ("{0} and {1} swap partners" -f $this.Name, $Person.Name)
$thisFiance = $this.Fiance
$personFiance = $Person.Fiance
$this.EngageTo($personFiance)
$Person.EngageTo($thisFiance)
}
}
매우 간단한 답장을 보내 주셔서 감사 드리며 "간단한"직접 번역을하지 않도록 상기시켜 주셨습니다. 나는 나의 실수를 인정하고 그것을 반복하지 않을 것이다. –