2

How to work with the symbol EndOfFile? I want to use the EndOfFile symbol to determine when my control structure reaches the end of a file.

Case 1: suppose we reach the end of file while continuously reading numbers from it. Which correctly returns "end".

num=EndOfFile;
Which[
  num==EndOfFile, res="end",
  num==1,         res="1",
  num==2,         res="2",
  True,           res="non"
]

(* ==> "end" *)

Case 2: suppose we read a 3 (that is, num=3): in this case Which returns unevaluated.

István Zachar
  • 47,032
  • 20
  • 143
  • 291
  • 1
    When you compare nonnumerical values, you should always use SameQ (===) to test for structural identity instead of numerical equation (Equal = ==). EndOfFile does not have a numerical value thus if num is 1, 1 == EndOfFile returns unevaluated. – István Zachar Feb 27 '13 at 03:21

1 Answers1

1
Which[num === EndOfFile, res = "end", 
      num == 1,          res = "1", 
      num == 2,          res = "2", 
      True,              res = "non"]

Edit

Perhaps you may want to experiment a little with SameQ[]. For example:

ClearAll[h, j]
h == j
h === j
(*
 h == j
 False
*)
Dr. belisarius
  • 115,881
  • 13
  • 203
  • 453