Difference between out mode and in out mode? As far i have collected the info is the main difference i know is that in both out and in out mode the actual parameter is expected to be altered even writing and reading is also possible then what is main difference please help me to understand?
what is the main Difference between out mode and in out mode?
1.9k Views Asked by anil yost At
1
There are 1 best solutions below
Related Questions in ADA
- Redis/Resque [Error connecting to Redis on localhost:6379 (ECONNREFUSED)]
- The Heroku's Python doesn't find redis(redistogo) for import
- Is it possible for two apps on the same heroku account to access the same RedisToGo Server?
- call': ERR Invalid IP address in MEET (Redis::CommandError) Redis
- phpredis with Redis to go
- Heroku Resque Redis::TimeoutError: Connection timed out
- Heroku won't connect to redis to go [ioredis] Unhandled error event: Error: connect ECONNREFUSED 127.0.0.1:6379
- Redis Queue + python-rq: Right pattern to prevent high memory usage?
- Is RedisToGo available "locally" on heroku?
- clojure carmine redis connection errors
Related Questions in MODE
- Redis/Resque [Error connecting to Redis on localhost:6379 (ECONNREFUSED)]
- The Heroku's Python doesn't find redis(redistogo) for import
- Is it possible for two apps on the same heroku account to access the same RedisToGo Server?
- call': ERR Invalid IP address in MEET (Redis::CommandError) Redis
- phpredis with Redis to go
- Heroku Resque Redis::TimeoutError: Connection timed out
- Heroku won't connect to redis to go [ioredis] Unhandled error event: Error: connect ECONNREFUSED 127.0.0.1:6379
- Redis Queue + python-rq: Right pattern to prevent high memory usage?
- Is RedisToGo available "locally" on heroku?
- clojure carmine redis connection errors
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
The best explanation of the difference is in RM 6.4.1(11-15).
Semantically, there is a difference only for parameters that are passed by copy. If you call a subprogram that has an
in out
parameter, the actual parameter is expected to have a legitimate value before the call. On entry, the subprogram makes a copy of the variable and checks to make sure it satisfies the constraints.For an
out
parameter, the actual parameter does not need to have a value going in; it could be uninitialized garbage. The intent is that the subprogram will not use the value of this parameter until it has been set, by the subprogram (it can be set either by assignment or by being passed as anout
parameter to some other subprogram, or to aDefault_Value
, or perhaps by other means). This is not enforced, however.This can cause different behavior in some cases. For example:
Since
Param
is anin out
parameter, the constraints are checked on entry. Thus, the call toProc(Y)
raises aConstraint_Error
. However:In this case, no
Constraint_Error
is raised. In fact,Y
does not need to be initialized at all, because the expectation is that the procedure will not use the input value. According to the RM, the value is not even copied, for certain classes of parameter types. So in this case:Save_Param
will probably be set to some garbage value, not3
. (In Ada 2012, there is aDefault_Value
aspect that can be applied to subtypes; in a case like that, anout
parameter would be set to this default value instead of uninitialized garbage, while anin out
parameter would still get the value from the actual parameter.)For parameters that are passed by reference, there really is no difference in behavior.
The rules in Ada 83 were different. A subprogram with an
in out
parameter could both read and write that parameter, while a subprogram with anout
parameter was allowed to assign to the parameter but could not do anything that would read that parameter's value (barring some cases where there was no way around reading discriminants). Thus:In other words, an
out
parameter really wasout
put-only. The rule was relaxed in Ada 95, though, as programmers found it too restrictive.