Функция BrightScript, возвращающая строку, иногда возвращает себя (функция) - PullRequest
0 голосов
/ 08 июля 2019

Иногда, когда возвращается функция BrightScript, которая должна возвращать invalid или string, она не возвращает ни недействительную, ни строку, а вместо этого возвращает (кажется, что) тип Function.Я не смог отследить почему или при , но для при это выглядит довольно произвольно.Это такая функция.

function RegRead(key, section = invalid)
  if section = invalid section = "Default"
  sec = CreateObject("roRegistrySection",section)
  if sec.Exists(key)
    return sec.Read(key)
  end if
  return invalid
end function

Я называю это примерно так

val = RegRead("code")

Что происходит?Это ошибка BrightScript?

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Я думаю, я мог бы найти виновника: имя конфликтует. У меня были такие функции, как

function Code()
    ' bla bla bla
end function

... что означало, что я НЕ мог иметь переменные с таким же именем где-то еще в этом же скрипте. 100

Имея функцию выше названную Code, я не мог сделать это где-то еще:

sub Somethingelse()
    code = FetchValue()
end sub

Поскольку имя переменной code будет конфликтовать с функцией Code(). ?

0 голосов
/ 08 июля 2019

Здесь вызывается функция

m.top.GlobleURL = GetAuthData() ' Call Read Function in Globle Variable
print "Read URL : " + m.top.GlobleURL 
SetAuthData(Serverurl)  ' Call write Function in Seturl

'Здесь функция чтения

Function GetAuthData() As Dynamic
' reg = CreateObject("roRegistry")
 sec = CreateObject("roRegistrySection", "Authentication")
' print "section : " + Authentication
 if sec.Exists("Authentication")
  print "Read URL : " + m.top.GlobleURL
  print " ****************** DATA :" + m.top.GlobleURL
  return sec.Read("Authentication")
 'return sec.Delete("Authentication") ' Here not override concept so compalsary delete first and after again second URL Store pannel.brs and hud.brs both file

 print "***********************GetAuthData************************"
 endif

 return invalid
End Function

Здесь функция записи

Function SetAuthData(Serverurl As String) As Void
' reg = CreateObject("roRegistry")
 sec = CreateObject("roRegistrySection", "Authentication")
 m.top.GlobleURL = Serverurl
' if not m.top.GlobleURL = Serverurl 
sec.Write("Authentication", m.top.GlobleURL)
?"key for the URL" sec.GetKeyList()

    Print "Write URL :" + m.top.GlobleURL
' end if

 print "***********************SetAuthData************************"

' Flush(true)

End Function

вы всегда передаете с аргументом в функцию в это время вызова, передаете в качестве аргумента и не передаете никакого аргумента при записи функции, затем просто объявляете одну переменную и инициализируете ее.

...