# New Ticket Created by  Colin Kuskie 
# Please include the string:  [perl #44553]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=44553 >


This patch adds a new tutorial file, 56_defined.pir, which talks about the 
concept of definedness.                   
Index: examples/tutorial/56_defined.pir
===================================================================
--- examples/tutorial/56_defined.pir    (revision 0)
+++ examples/tutorial/56_defined.pir    (revision 0)
@@ -0,0 +1,77 @@
+=head1 defined
+
+The defined function tells you if the contents of a PMC register is defined or 
not.  Using
+defined on an temporary Integer, Number, or String register will generate an 
error.
+
+=cut
+
+.sub main :main
+
+    $I0 = defined $P0
+    if $I0 goto defined_PO
+        say "$P0 is undefined before being used"
+        goto end_defined_P0
+  defined_PO:
+    say "$P0 is defined before being used"
+
+=pod
+
+PMCs are undefined before being typed.  After they are typed, they
+are defined, and hold whatever default value PMCs of that type contain.  For 
example,
+Integer PMCs, by default, are zero.
+
+=cut
+
+  end_defined_P0:
+    $P1 = new String
+    $I0 = defined $P1
+    say $P1                                 # prints \n
+    if $I0 goto defined_P1
+        say "$P1 is undefined after being typed"
+        goto end_defined_P1
+  defined_P1:
+    say "$P1 is defined after being typed"
+
+  end_defined_P1:
+    $P2 = new Integer
+    $I0 = defined $P2
+    say $P2                                 # prints 0\n
+    if $I0 goto defined_P2
+        say "$P2 is undefined after being typed"
+        goto end_defined_P2
+  defined_P2:
+    say "$P2 is defined after being typed Integer"
+
+=pod
+
+The exception to that is if you use the Undef PMC.  After typing the PMC, it 
will still
+be undef.
+
+=cut
+
+  end_defined_P2:
+    $P3 = new Undef
+    $I0 = defined $P3
+    if $I0 goto defined_P3
+        say "$P3 is undefined after being typed as Undef"
+        goto end_defined_P3
+  defined_P3:
+    say "$P3 is defined after being typed"
+  end_defined_P3:
+
+
+=pod
+
+
+
+=cut
+
+
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
+

Reply via email to