The discussion revolves around the possibility of assigning a class instance, specifically a Vec4 object, directly to an integer in Visual Basic. The original poster seeks clarification on how to implement this concept, expressing confusion about the syntax and functionality. Participants explain that the proposed assignment (Vec4 A(i,j,k,1) = 1) is not valid. Instead, they suggest using properties to manage the values within the Vec4 class. Examples are provided for both VB.Net and VB6/VBA, illustrating how properties serve as intermediaries between private member variables and external code, allowing for value validation upon assignment. The conversation emphasizes the importance of understanding property methods, including how to create read-only and write-only properties, and how to validate input types effectively. Overall, the thread highlights the need for clarity in property usage and the correct approach to class instantiation and assignment in Visual Basic.
#1
pazmush
32
0
i was wondering whether it was possible to have a class say Vec4(i,j,,k,n) and then being able to assign it as an int
I'm not quite sure what language you're talking about (C,C++,C#?), but I think you can only check the return with "function = 1" unless you're setting a property in which case "A" is the property and "i,j,k,1" are the arguments.
I only know VB well, so I can tell you that's the way it works in there.
#3
pazmush
32
0
i am using visual basic, but i don't really understand what you are saying, do you reacon you could break it down a bit for me
thanks
#4
Tanner65
28
0
pazmush said:
i am using visual basic, but i don't really understand what you are saying, do you reacon you could break it down a bit for me thanks
Surely.
I'm trying to wrap my head around what you're asking.
What you typed, to my knowledge, will not work. If you can explain what you're trying to do, I can get a better idea of it.Note: I'm going to describe both the VB.Net version and VB6/VBA version of properties, feel free to skip the property stuff.
Note2: If any of this is incorrect, please someone feel free to correct me, I don't know everything and only novice to intermediate expertise in .Net or VB6. In other words, someone confirm this for me.
In property terms of what I was thinking you could do is something like this:
Code:
'Random class/random function
dim Vec4 as Class
Vec4.A(i,j,k,l) = 1
or you can check the return function
Code:
'Random class/random function
Dim Vec4 as Class
if Vec4.A(i,j,k,l) = 1 then
...
end if
The property stuff:
According to Wikipedia a property is a intermediary between a private member variable and the outside world. (Code examples from same link).
VB6/VBA:
Code:
' in a class named clsPen
Private m_Color As Long 'Private member variable
Public Property Get Color() As Long 'Public reading function
Color = m_Color
End Property
Public Property Let Color(ByVal RHS As Long) 'Public writing procedure
m_Color = RHS
End Property
VB.Net:
Code:
' in a class named clsPen
Private m_Color As Integer ' Private field
Public Property Color As Integer ' Public property
Get
Return m_Color 'Public reading function
End Get
Set(ByVal Value As Integer)
m_Color = Value 'Public writing procedure
End Set
End Property
All you see as the developer when you're writing to clsPen.Color is:
Writing:
Code:
clsPen.Color=4
Reading:
Code:
A = clsPen.Color
As mentioned in the link, properties adds a level abstractness between the outside code and the private member, so you can actually check to make sure that the value passed is within a range or is a color. You can do this by using built in functions or outside functions.
Validating information to set is a number:
Valdidating in VB6/VBA:
Code:
' in a class named clsPen
Private m_Color As Long 'Private member variable
Public Property Get Color() As Long 'Public reading function
Color = m_Color
End Property
Public Property Let Color(ByVal RHS As Object) 'Public writing procedure
'Long changed to object to allow more abstractness to what is sent to it
' without throwing error, not necessarily correct, but shows the functionality
' of the Let statement
If IsNumeric(m_Color) then m_Color = RHS
'Or
'If TypeName(m_Color) = "Long" then m_Color = RHS
End Property
Validating in VB.Net:
Code:
' in a class named clsPen
Private m_Color As Integer ' Private field
Public Property Color As Object' Public property
Get
Return CObj(m_Color) 'Public reading function
'(CObj converts the integer to an Object)
End Get
Set(ByVal Value As Object)'Public writing procedure
If IsNumeric(Value) then m_Color = Value
'Or the more proper way
'If TypeOf(Value) Is Integer then m_Value = Value
'TypeOf is better than TypeName (imho) because TypeOf is
' returning the value to be compared against a static value
' rather than the string name. I use TypeOf all the time to
' verify things in control loops. Remember use "Is" between
' objects and "=" between everything else to verify it
End Set
End Property
Also, using properties you can make a property read only or write only.
Read only in VB6/VBA:
Code:
' in a class named clsPen
Private m_Color As Long 'Private member variable
Public Property Get Color() As Long 'Public reading function
Color = m_Color
End Property
Write only in VB6/VBA:
Code:
' in a class named clsPen
Private m_Color As Long 'Private member variable
Public Property Let Color(ByVal RHS As Long) 'Public writing procedure
m_Color = RHS
End Property
Read only in VB.Net:
Code:
' in a class named clsPen
Private m_Color As Integer ' Private field
Public ReadOnly Property Color As Integer ' Public property
Get
Return m_Color 'Public reading function
End Get
End Property
Write only in VB.Net
Code:
' in a class named clsPen
Private m_Color As Integer ' Private field
Public WriteOnly Property Color As Integer ' Public property
Set(ByVal Value As Integer)'Public writing procedure
m_Color = Value
End Set
End Property
Blender just recently dropped a new version, 4.5(with 5.0 on the horizon), and within it was a new feature for which I immediately thought of a use for. The new feature was a .csv importer for Geometry nodes. Geometry nodes are a method of modelling that uses a node tree to create 3D models which offers more flexibility than straight modeling does. The .csv importer node allows you to bring in a .csv file and use the data in it to control aspects of your model. So for example, if you...
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...
I am trying to run an .ipynb file and have installed Miniconda as well as created an environment as such
-conda create -n <env_name> python=3.7 ipykernel jupyter
I am assuming this is successful as I can activate this environment via the anaconda prompt and following command
-conda activate <env_name>
Then I downloaded and installed VS code and I am trying to edit an .ipynb file. I want to select a kernel, via VS Code but when I press the button on the upper right corner I am greeted...