elect
05/05/2019, 7:33 PMtailrec
? And get rid of the !!
?
while (window.flags has Wf.ChildWindow && window.parentWindow != null)
window = window.parentWindow!!
Shawn
05/05/2019, 7:55 PMtailrec fun findWindow(window: Window): Window {
return if (window.flags has Wf.ChildWindow && window.parentWindow != null) {
findWindow(window.parentWindow)
} else {
window
}
}
elect
05/05/2019, 7:56 PMwindow.parentWindow
is Window?
, that's the problemShawn
05/05/2019, 7:56 PMwindow.parentWindow
is a var
or a val
with a computed getterelect
05/05/2019, 7:56 PMvar
indeedShawn
05/05/2019, 7:57 PMval
elect
05/05/2019, 7:57 PMShawn
05/05/2019, 7:58 PMelect
05/05/2019, 8:00 PMtailrec fun findWindow(window: Window): Window {
val parent = window.parentWindow
return if (window.flags has Wf.ChildWindow && parent != null) findWindow(parent) else window
}
elect
05/05/2019, 8:00 PMfindWindow
isnt the last call.. or is it?Shawn
05/05/2019, 8:01 PMelect
05/05/2019, 8:02 PMShawn
05/05/2019, 8:03 PMtailrec
doesn’t mean that the recursive call has to literally be the last visible line in a functionShawn
05/05/2019, 8:03 PMShawn
05/05/2019, 8:04 PMif
to make it look more tail recursive, but it’s really the same thingShawn
05/05/2019, 8:05 PMtailrec fun findWindow(window: Window): Window {
val parentWindow = window.parentWindow
return if (Wf.ChildWindow !in window.flags || parentWindow == null) {
window
} else {
findWindow(parentWindow)
}
}
elect
05/05/2019, 8:11 PM