Italian Funzione che viene segnalata 'warning #2'

amorosik

Expert
Licensed User
B4X:
Sub colore_rgb_da_stringa(colore_stringa As String) As Int
    If colore_stringa="BIA" Then Return Colors.RGB(255,255,255)
    If colore_stringa="ROS" Then Return Colors.RGB(255,0,0)
    If colore_stringa="BLU" Then Return Colors.RGB(0,0,255)
End Sub

"Non tutti i punti chiave del codice restituiscono un valore (warning #2)

Come mai il codice trascritto sopra mi viene segnalato col warning #2 indicato ???
 

LucaMs

Expert
Licensed User
Longtime User
Come mai il codice trascritto sopra mi viene segnalato col warning #2 indicato ???

Perché se colore_stringa fosse "GIA" che valore restituirebbe la funzione?

Ovviamente l'IDE non fa questo "ragionamento", semplicemente non trova un "Return xxx" incondizionato né un Else.

3 (4) modi "migliori"; 2 per evitare il warning, il terzo (quarto) per "qualità":
B4X:
Sub colore_rgb_da_stringa(colore_stringa As String) As Int
    Dim Result As Int

    Select colore_stringa
        Case "BIA"
            Result = Colors.RGB(255,255,255)
        Case "ROS"
            Result = Colors.RGB(255,0,0)
        Case "BLU"
            Result = Colors.RGB(0,0,255)
        Case Else '<---
            Result = Colors.RGB(0,0,0) ' Un colore di default.
    End Select

    Return Result
End Sub

B4X:
Sub colore_rgb_da_stringa(colore_stringa As String) As Int
    If colore_stringa="BIA" Then Return Colors.RGB(255,255,255)
    If colore_stringa="ROS" Then Return Colors.RGB(255,0,0)
    If colore_stringa="BLU" Then
        Return Colors.RGB(0,0,255)
    Else ' <---
        Return Colors.RGB(0,0,0) ' Un colore di Default
    End If
End Sub

B4X:
Public mapColors As Map


mapColors.Initialize
mapColors.Put("BIA", Colors.RGB(255,255,255))
mapColors.Put("ROS", Colors.RGB(255,0,0))
mapColors.Put("BLU", Colors.RGB(0,0,255))


Log(mapColors.Get("ROS"))


' Modo più "corretto": evitare di usare i "literal" (valore scritti direttamente nel sorgente, come "BIA").
' Usare delle costanti per quei 3:

Public Const CLR_BIANCO As String = "BIA"
Public Const CLR_ROSA As String = "ROS"
Public Const CLR_BLU As String = "BLU"

mapColors.Put(CLR_BIANCO, Colors.RGB(255,255,255))
mapColors.Put(CLR_ROSA, Colors.RGB(255,0,0))
mapColors.Put(CLR_BLU, Colors.RGB(0,0,255))

Log(mapColors.Get(CLR_ROSA))
 
Last edited:
Top