To install click the Add extension button. That's it.

The source code for the WIKI 2 extension is being checked by specialists of the Mozilla Foundation, Google, and Apple. You could also do it yourself at any point in time.

4,5
Kelly Slayton
Congratulations on this excellent venture… what a great idea!
Alexander Grigorievskiy
I use WIKI 2 every day and almost forgot how the original Wikipedia looks like.
Live Statistics
English Articles
Improved in 24 Hours
Added in 24 Hours
What we do. Every page goes through several hundred of perfecting techniques; in live mode. Quite the same Wikipedia. Just better.
.
Leo
Newton
Brights
Milds

From Wikipedia, the free encyclopedia

In computing, IIf (an abbreviation for Immediate if[1]) is a function in several editions of the Visual Basic programming language and ColdFusion Markup Language (CFML), and on spreadsheets that returns the second or third parameter based on the evaluation of the first parameter. It is an example of a conditional expression, which is similar to a conditional statement.

YouTube Encyclopedic

  • 1/3
    Views:
    117 684
    19 643
    9 784
  • Visual Basic .NET Tutorial 3 - Using If then Else Statements in Visual Basic
  • Lecture 2. Unit 4. Logical clocks and vector clocks, ID2203
  • Microsoft Access Loan Payment Calculator PMT Function

Transcription

Syntax

The syntax of the IIf function is as follows:

IIf(expr, truepart, falsepart)

All three parameters are required:

  • expr is the expression that is to be evaluated.
  • truepart defines what the IIf function returns if the evaluation of expr returns true.
  • falsepart defines what the IIf function returns if the evaluation of expr returns false.

Many languages have an operator to accomplish the same purpose, generally referred to as a conditional operator (or, less precisely, as a ternary operator); the best known is ?:, as used in C, C++, and related languages. Some of the problems with the IIf function, as discussed later, do not exist with a conditional operator, because the language is free to examine the type and delay evaluation of the operands, as opposed to simply passing them to a library function.

Examples

These examples evaluate mathematical expressions and return one of two strings depending on the outcome.

result = IIf(5 < 10, "Yes it is", "No it isn't")     ' Returns "Yes it is"
result = IIf(2 + 2 = 5, "Correct", "Wrong")          ' Returns "Wrong"

Criticisms

Efficiency

Because IIf is a library function, it will always require the overhead of a function call, whereas a conditional operator will more likely produce inline code.

Furthermore, the data type of its arguments is Variant. If the function is called with arguments of other types (variables or literals), there will be additional overhead to convert these to Variant. There may also be additional overhead to check the argument types and convert one of them if they do not have the same type.

Side effects

Another issue with IIf arises because it is a library function: unlike the C-derived conditional operator, both truepart and the falsepart will be evaluated regardless of which one is actually returned. In the following code snippet:

value = 10
result = IIf(value = 10, ''TrueFunction'', FalseFunction)

although TrueFunction is the function intended to be called, IIf will call both TrueFunction and FalseFunction. Similarly,

a = 10
b = 0
result = IIf(b <> 0, a / b, 0)

While the intent may be to avoid a division by zero, whenever b is zero the error will actually happen. This is because the code in the snippet is executed as if by

a = 10
b = 0
_temp1 = b <> 0
_temp2 = a / b ' Error if b = 0
_temp3 = 0
If _temp1 Then
    result = _temp2
Else
    result = _temp3
End If

This issue makes the IIf() call less useful than the conditional operator. To solve this issue, Microsoft developers had considered[2] converting IIf to an intrinsic function; had this happened, the compiler would have been able to perform type inference and short-circuiting by replacing the function call with inline code.

Alternatives to IIf

In Visual Basic, IIf is not the sole way to evaluate and perform actions based on whether an expression is true or false.

The following example uses IIf:

result = IIf(x = y, value1, value2)

It could also be written in the following way, using standard conditionals:

If x = y Then
    result = value1
Else
    result = value2
End If

The above example would also eliminate the problem of IIf evaluating both its truepart and falsepart parameters.

Visual Basic 2008 (VB 9.0) introduced a true conditional operator, called simply "If", which also eliminates this problem. Its syntax is similar to the IIf function's syntax:

result = If(x = y, value1, value2)

IIf in other programming languages

$iif() is present in mIRC script, with similar syntax.

alias testiif { 
  %testiif = 0
  echo -a $iif(1,$testiif2,$testiif2) %testiif execution(s)
  unset %testiif
}
alias testiif2 { inc %testiif | return testing $!iif: }

Calling /testiif will print out "testing $iif: 1 execution(s)". mIRC's $iif acts more like C's ?: than IIf() in VB since it won't pre-evaluate both.

IIF() is a function in dBase and xBase (1992 and older).

iif() is also a compiler magic function of Oxygene. It is not a real function and is at compile time unrolled to conditional statements.

var someString := iif(someInt > 35 , 'Large', 'Small');

In this example a new strong type string named "someString" is created (using Type inference) and the iif function will fill it depending on the outcome of the boolean expression.

SQL Server 2012 and newer implements the IIF() function (Transact-SQL):

DECLARE @a int = 45;
DECLARE @b int = 40;
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;

IIf in C (and its variants) and Perl is the ?: conditional operator:

printf("number %d is%s even", num, num % 2 ? " not" : "");

IIf in Python:

parity = "odd" if n % 2 else "even"

IIf (either) in Red and Rebol:

parity: either odd? n ['odd]['even]

References

  1. ^ "How to Use the IIf() (Immediate If) Function". 2004-06-08. Retrieved 2007-05-09.
  2. ^ Paul Vick (2006-12-29). "IIF, a True Ternary Operator and Backwards Compatibility". Retrieved 2007-02-01.

External links

This page was last edited on 22 November 2023, at 17:16
Basis of this page is in Wikipedia. Text is available under the CC BY-SA 3.0 Unported License. Non-text media are available under their specified licenses. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. WIKI 2 is an independent company and has no affiliation with Wikimedia Foundation.